返回信息流finally
{
try
{
if (br!=null)
br.close();
}
catch (IOException e)
{
throw new RuntimeException("读异常");
}
try
{
if (bw!=null)
bw.close();
}
catch (IOException e)
{
throw new RuntimeException("写异常");
}
}
第一个try异常抛出RuntimeException后,第二个try还能执行到吗?谢谢
这是一条镜像帖。来源:北邮人论坛 / java / #24793同步于 2013/4/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
[问题]异常处理时finally中有Runtime异常抛出finally中其他部分
matao409
2013/4/14镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
任何一个由大括号扩起的语句块都可能在中间抛出异常,导致结束,异常后面的语句无法进行,
try/catch结构使得try块结束后,如果有异常并且属于catch声明的范围内,线程进入catch块处理,如果该异常不在声明范围内,则导致外围块(或所属方法)中断,直到main函数中断。
finally保证try/catch块结束(所有层次的中断处理结束后)后进入finally块执行。
finally块也是一个语句块。
所以如果第一个try抛出RuntimeException后第二个try不能执行了
【 在 idyllic 的大作中提到: 】
: 任何一个由大括号扩起的语句块都可能在中间抛出异常,导致结束,异常后面的语句无法进行,
: try/catch结构使得try块结束后,如果有异常并且属于catch声明的范围内,线程进入catch块处理,如果该异常不在声明范围内,则导致外围块(或所属方法)中断,直到main函数中断。
: finally保证try/catch块结束(所有层次的中断处理结束后)后进入finally块执行。
: ...................
明白了,非常感谢[ema11]