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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐林渊 黑马帝   /  2012-3-28 13:21  /  2416 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 唐林渊 于 2012-3-28 13:26 编辑

在我得到
catch(IOException e){            //

          System.out.print(e.tostring());           这个地方可以用throw new RuntimeException("读取文件异常")                    //这两个方法有什么区别  是不是输出的还会继续执行,而不会停止?
}

6 个回复

正序浏览
抓哇 初级黑马 2012-3-28 15:52:55
7#
只要执行到catch块里的话程序都会停止 或者如果有finally会执行下那里的语句 就没别的了

这个2个方法区别:第一种只是仅仅输出异常信息
第2个是吧异常再往下抛给子类运行时异常处理 此操作让异常更详细

还有如果是写在方法名后面则是往上抛 此操作则是异常更模糊了 隐藏了异常详细
这里的普通方法名后面或main方法后面都用throws Exception
回复 使用道具 举报
     引用《Java编程思想》中的话:
         “如果方法要抛出异常,它必须假定异常将被“捕获”并得到处理。异常处理的好处之一就是,使你得以先在一个地方专注于正在解决的问题,然后再别的地方处理这些代码中的错误。”
回复 使用道具 举报
System.out.print(e.tostring()); 异常处理
throw new RuntimeException("读取文件异常") 此时程序会停止,RuntimeException是系统异常,比如内存溢出等,它抛出的目的就是让系统停止,RuntimeException抛出后调用者不用抛或者处理,需要修改代码来处理。
回复 使用道具 举报
API文档解释:
RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。
可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。

也就是说,之所以不用在函数声明,是因为不需要让调用者处理。
当该异常发生,希望程序停止。因为出现了无法继续运算的情况,
希望停止程序后,对代码进行修正。
回复 使用道具 举报
System.out.print(e.tostring());   //这相当于把异常处理了  
throw new IOException("读取文件异常") //这里继续把异常抛出,那么当你调用这个方法时必须要处理      
回复 使用道具 举报
没看懂。。。呵呵
表达不清楚啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马