黑马程序员技术交流社区

标题: IO疑惑 [打印本页]

作者: 王广彬    时间: 2012-8-16 23:00
标题: IO疑惑
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异常效果是一样的啊,那么在以后开发中如果直接把异常抛出会出现哪些问题?
作者: 张忠豹    时间: 2012-8-16 23:11
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的处理就是打印异常信息





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2