【发布时间】:2012-08-02 19:18:40
【问题描述】:
我有一个sn-p如下:
try
{
//blah!!
}
catch(IOException e)
{
throw new RuntimeException(e);
}
我不明白上面的工作原理是什么?它会catch 和IOException 吗?当它这样做时,它会throw 和RuntimeException 吗?在那种情况下,IOException 将没有任何意义,对吧?举个例子会有所帮助。
【问题讨论】:
-
你是对的。当您想抛出自己的异常而不是系统默认值时,它非常有用(例如,更改异常消息或添加一些提示出了什么问题以及如何修复它)
-
是的,上面的代码会捕获(并丢弃)IOException,然后抛出一个RuntimeException。不一定是好的编码实践,但完全合法的 Java。异常是一个对象,一旦被捕获,与任何其他对象相比就没有特殊状态——它可以被忽略(并被 GC 清理)、作为参数传递、重新抛出等等。
-
@Hot Licks IOException 被包裹在 RuntimeException 中,如果你不喜欢检查的异常,这不一定是坏事。
标签: java exception-handling try-catch