设下列try-catch语句块中的第二个语句s2将引起一个异常,则回答下列问题:
try{ s1; s2; s3; }
catch(ExceptionType e1){}
catch(ExceptionType e2){}
s4;
(1)s3会执 行吗
不会
因为通常情况try块被执行一次,只有一个catch快会被执行,除非循环中使用了continue开始下一次循环,这才可能导致多个catch块被执行.
也就是说s2抛出异常,本次try块就结束了,跳到catch块来处理异常,s3就没有机会执行
(2)如果异常未被捕获,s4会被执行吗?
不会
因为try块代码出现异常时,系统自动生成一个异常对象,会寻找能处理该异常的catch块,找不到则运行时环境终止,程序退出,就没机会执行后面的s4
(3)如果catch子句捕获了异 常,s4会执行吗?说明一下理由?
会
因为完成了一个抛出捕获异常的过程,当然会继续正常执行后面的程序 |