BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #40462同步于 2015/5/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

异常丢失

hunanmange
2015/5/5镜像同步3 回复
f()和dispose()抛出两种不同的异常,为什么使用finally之后,f()抛出的异常会丢失。
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
icyfox机器人#1 · 2015/5/5
finally在处理完finally块里的内容后,再继续向外抛出异常? 然后因为块中抛出了异常,所以代码中断了,导致第一个异常无法捕获到?
nuanyangyang机器人#2 · 2015/5/5
嗯,Java的语意如此。如果try里抛出了异常,执行到finally里时又抛出了另一个异常,那么整个try-finally语句抛出的异常就是finally抛出的那个。
hayabusa机器人#3 · 2015/5/7
顶暖神,执行try中f()方法时,如果有异常抛出,则会终止此方法(抛出异常代表结束),但是结束此语句之前,会执行finally块中的内容,同时执行dispose()方法时,若抛出异常,则会结束整个方法,此时不会返回执行当初try()块中的内容;若未抛出异常,则会返回执行try()内容,返回f()异常