黑马程序员技术交流社区

标题: 关于IO中的小异常处理 [打印本页]

作者: 唐林渊    时间: 2012-3-28 13:21
标题: 关于IO中的小异常处理
本帖最后由 唐林渊 于 2012-3-28 13:26 编辑

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

          System.out.print(e.tostring());           这个地方可以用throw new RuntimeException("读取文件异常")                    //这两个方法有什么区别  是不是输出的还会继续执行,而不会停止?
}
作者: 翟友伟    时间: 2012-3-28 13:25
没看懂。。。呵呵
表达不清楚啊
作者: adison    时间: 2012-3-28 13:31
System.out.print(e.tostring());   //这相当于把异常处理了  
throw new IOException("读取文件异常") //这里继续把异常抛出,那么当你调用这个方法时必须要处理      
作者: izwj    时间: 2012-3-28 13:34
API文档解释:
RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。
可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。

也就是说,之所以不用在函数声明,是因为不需要让调用者处理。
当该异常发生,希望程序停止。因为出现了无法继续运算的情况,
希望停止程序后,对代码进行修正。
作者: 王国华    时间: 2012-3-28 15:37
System.out.print(e.tostring()); 异常处理
throw new RuntimeException("读取文件异常") 此时程序会停止,RuntimeException是系统异常,比如内存溢出等,它抛出的目的就是让系统停止,RuntimeException抛出后调用者不用抛或者处理,需要修改代码来处理。

作者: newlaw2013    时间: 2012-3-28 15:48
     引用《Java编程思想》中的话:
         “如果方法要抛出异常,它必须假定异常将被“捕获”并得到处理。异常处理的好处之一就是,使你得以先在一个地方专注于正在解决的问题,然后再别的地方处理这些代码中的错误。”
作者: 抓哇    时间: 2012-3-28 15:52
只要执行到catch块里的话程序都会停止 或者如果有finally会执行下那里的语句 就没别的了

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

还有如果是写在方法名后面则是往上抛 此操作则是异常更模糊了 隐藏了异常详细
这里的普通方法名后面或main方法后面都用throws Exception




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