黑马程序员技术交流社区
标题:
异常抛出!!!!!
[打印本页]
作者:
小黑-张颖
时间:
2011-9-4 06:19
标题:
异常抛出!!!!!
class Copy{
public static void copy(String from, String to)
{
FileReader fr=null;
FileWriter fw=null;
try{
fr=new FileReader(from);
fw=new FileWriter(to);
char[] cbuf=new char[1024];
int length;
while((length=fr.read(cbuf))!=-1)
{
fw.write(cbuf,0,length);
}
}catch(FileNotFoundException e)
{
e.printStackTrace();
}catch(IOException e)
{
e.printStackTrace();
}
}
}
为什么要抛出两个异常呢!!!
为什么不把:
catch(FileNotFoundException e)
{
e.printStackTrace();
}catch(IOException e)
{
e.printStackTrace();
}
改写成 catch(Exception e)
{e.printStackTrace();
}
作者:
匿名
时间:
2011-9-4 07:28
Exception的范围更大,如果你想了解程序中发生的异常具体是哪方面,就应该抛出更为具体的异常
首先应该捕获范围最小的异常,再扩大范围,否则异常会在前面被捕获,后面的catch永远没有机会执行
作者:
匿名
时间:
2011-9-4 09:16
IOException异常有很多种,如ClosedChannelException, EOFException, FileLockInterruptionException, FileNotFoundException,等,前面任意一种异常都会触发IOException,而任何异常都会被Exception捕获,如果你不单独捕获具体的异常,那么当发生异常时你将不知道是EOFException还是FileNotFoundException,这样对程序的调试提高了复杂性,我们捕捉异常的最终目的就是尽快找到并解决,很显然知道具体的异常对症下药能最大程度提高效率。
作者:
匿名
时间:
2011-9-4 09:26
楼上已经说的很明白了哦
作者:
匿名
时间:
2011-9-4 10:51
标题:
回复 板凳 的帖子
对
作者:
匿名
时间:
2011-9-6 07:32
恩 已经了解了
作者:
匿名
时间:
2011-9-6 08:43
标题:
回复 楼主 的帖子
楼主你改成那样也不是不可以,
[b]但原则上来讲 ,抛异常的地方应该按照异常的不同而做不同的处理[/b]
如果你改成那样,就是把所有可能的异常一股脑的都捕获了, 这样的话程序原则就不对, 代码维护起来也会比较麻烦
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2