我可以通过以下代码捕获runtimeexception或其子类:
try {
//code that throws subclass of RuntimeException
throw new ChildRuntimeException("try");
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
但下面的代码出现错误,无法在异常捕获块中捕获runtimeexception。
try {
// code that throws subclass of Exception
throw new ChildExceptionClass("try");
} catch (ChildExceptionClass ex) {
throw new RuntimeException(ex.getMessage());
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
我搜索了相同类型的问题,但没有找到合适的答案。有人能解释为什么行为不同吗?
2条答案
按热度按时间nbnkbykc1#
我猜你可能想做的是:
你明白区别吗?
mqxuamgl2#
在第二个示例中,您抛出了一个childruntimeexception,它被捕获,但随后抛出了一个新的runtimeexception。此块没有“catch”close,因此抛出异常而不捕获。
第二个catch与“try”块相关,而不是与“catch”块相关。