首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Exception >

java捕获异常嵌套的问题

2014-01-26 
各位: try { try { ...//code2 }catch(Exception e) { ... }finally { System.out.println( error 2 ) }

各位:
try
{
try
{
...//code2
}catch(Exception e)
{
...
}finally
{
System.out.println( "error 2 ");
}

}catch(Exception e)
{
...
}finally
{
System.out.println( "error 1 ");
}

这是个简单的异常嵌套,我想知道:如果code2部分代码出现异常,控制台肯定能打印 error 2,但外层的finally部分代码会执行吗?此处会打印error 1吗?


------解决方法--------------------------------------------------------
finally当然会执行,但是外面的catch是不会进去的
------解决方法--------------------------------------------------------
如果code2不throw new Exception()的话,或者没有运行时异常,外层try catch不会捕捉,也就不会打印出 error 1
------解决方法--------------------------------------------------------
外层finally当然会执行,因为里面的try有问题,那么外面的try肯定会报有问题,如果里面的catch没捉到,外面的catch会再捕捉,不管怎样外层finally在上述原因下会执行
------解决方法--------------------------------------------------------
程序中 遇到 finally 就必须执行 不管他在什么位置
------解决方法--------------------------------------------------------
error1,error2都会输出
------解决方法--------------------------------------------------------
异常嵌套,
(1)如果内层发生异常,那么将由内层的catch进行捕获, 此时内层的catch和内层的finally和

外层的finally都会执行,而外层的catch则不会执行。而如果内层不能捕获,则内层的

finally还是会执行而且外层的catch和finally都会执行。

(2)如果外层发生异常,则外层的catch和finally都会执行。


 

        

热点排行