java捕获两个异常,一个是另一个的超类
我有一个工厂方法,它解析文本并创建一个对象。在这个工厂方法中,有一个段一直读取到流的末尾。我编写的另一个方法实现了解析器的这一部分。以下是我正在使用的代码:
StringBuilder builder = new StringBuilder();
try {
while (reader.ready()) {
builder.append(reader.readLine());
}
} catch (EOFException e) {
// end method normally.
} catch (IOException e) {
throw e; // end method with an exception.
}
我想以不同于IOException的方式处理EOFEException,因此我在不同的catch()
块中捕获它们。我的问题是EOFException
抛出后IOException
{boolean
,它将在EOFEException区域中设置,并在IOException区域中测试,但这并不像我希望的那样干净。很抱歉,我没有很好地描述,提前谢谢你
# 1 楼答案
不,不会。对于给定的重试,最多将执行一个catch块
# 2 楼答案
不会的
运行时尝试使用
instanceof
的等价物,以源代码顺序将异常与处理程序的异常进行匹配。第一个异常匹配确定将执行的处理程序。该异常仅由try-catch处理一次这是没有必要的。(无论如何,它也不会起作用。)
参考资料: