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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小黑-张颖 黑马帝   /  2011-9-4 06:19  /  1946 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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();
                  }

评分

参与人数 1技术分 +2 收起 理由
老罗 + 2 早!

查看全部评分

6 个回复

倒序浏览
黑马网友  发表于 2011-9-4 07:28:34
沙发
Exception的范围更大,如果你想了解程序中发生的异常具体是哪方面,就应该抛出更为具体的异常
首先应该捕获范围最小的异常,再扩大范围,否则异常会在前面被捕获,后面的catch永远没有机会执行

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-4 09:16:39
藤椅
IOException异常有很多种,如ClosedChannelException, EOFException, FileLockInterruptionException, FileNotFoundException,等,前面任意一种异常都会触发IOException,而任何异常都会被Exception捕获,如果你不单独捕获具体的异常,那么当发生异常时你将不知道是EOFException还是FileNotFoundException,这样对程序的调试提高了复杂性,我们捕捉异常的最终目的就是尽快找到并解决,很显然知道具体的异常对症下药能最大程度提高效率。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-9-4 09:26:47
板凳
楼上已经说的很明白了哦
回复 使用道具 举报
黑马网友  发表于 2011-9-4 10:51:35
报纸

回复 板凳 的帖子

回复 使用道具 举报
黑马网友  发表于 2011-9-6 07:32:43
地板
恩 已经了解了
回复 使用道具 举报
黑马网友  发表于 2011-9-6 08:43:43
7#

回复 楼主 的帖子

楼主你改成那样也不是不可以,

[b]但原则上来讲 ,抛异常的地方应该按照异常的不同而做不同的处理[/b]

如果你改成那样,就是把所有可能的异常一股脑的都捕获了, 这样的话程序原则就不对, 代码维护起来也会比较麻烦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马