A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王广彬 中级黑马   /  2012-8-16 23:00  /  1581 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.io.*;
public class Practice1 {
public static void main(String[] args)throws IOException {
  FileReader fr=null;
  FileWriter fw=null;
  try{
   fr=new FileReader("D:\\String.java");
   fw=new FileWriter("D:\\txst.txt");
   char[] ch=new char[1024];
   int num=0;
   while((num=fr.read(ch))!=-1){
    fw.write(ch, 0, num);
   }
  }catch(IOException e){
   e.printStackTrace();
  }
  finally{
   try{
    if(fr!=null){
     fr.close();
    }
   }catch(IOException e){
    e.printStackTrace();
   }
   try{
    fw.close();
   }catch(IOException e){
    e.printStackTrace();
   }
   
  }
}
}

在上面代码操作处理异常时,抛出异常和try异常效果是一样的啊,那么在以后开发中如果直接把异常抛出会出现哪些问题?

1 个回复

倒序浏览
try{} catch(){}与抛出异常效果肯定不一样的
try {}catch(){}是用来处理异常的,比如这段
try{
   fr=new FileReader("D:\\String.java");
   fw=new FileWriter("D:\\txst.txt");
   char[] ch=new char[1024];
   int num=0;
   while((num=fr.read(ch))!=-1){
    fw.write(ch, 0, num);
   }
  }catch(IOException e){
   e.printStackTrace();//你捕获了程序可能抛出的异常,但是你压根就没有处理,而只是将简单的异常信息打印出来
//所以看到的效果和抛出异常的效果是一样的。如果你将e.printStackTrace()改为System.out.println("hello world")(打个比方)的话,出现异常捕获之后,
//打印出来的信息和你所说的抛出异常时不同
  }
//try{}catch(){}主动捕获异常,然后可能自己处理
//而函数申明部分throws 异常的话,它只是将异常抛给调用它的那个方法,而没有做处理。如果在主函数中这样的话,它直接抛给JVM,jvm的处理就是打印异常信息

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马