use*_*745 3 java exception finally try-catch
假设我们有以下方法(非常简化的版本):
void doSomething() { try { throw new Exception("A"); } finally { throw new Exception("B"); } }
消息"B"的异常在调用方法中被捕获.基本上,有没有办法知道在try块中抛出了哪个异常,如果finally块也抛出一些异常?假设方法doSomething()无法修改.
rge*_*man 6
JLS第14.20.2节规定:
如果try块的执行由于抛出值V而突然完成,...
...
如果finally块由于原因S而突然完成,则try语句突然完成,原因是S(并且丢弃并抛弃了值V的抛出).
Java必须丢弃原始异常V("完全突然")并且整个try-finally块"突然"完成S(" finally Exception,"B").
V
S
finally
Exception
无法检索原始try块异常"A",它对应V于JLS.
try
归档时间:
11 年,8 月 前
查看次数:
656 次
最近记录: