黑马程序员技术交流社区
标题:
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