异常处理机制中的finally子句

使用背景:无论异常是否存在或是否被捕获,都希望执行某些代码;

语法:

try{
   statements1;
  
statements2;
  statements3;
}
catch(TheException ex){
handing ex;
}
finally{
statements4;
}
statements5;

在任何情况下,finally块中的代码都会执行,不try块中的是否出现异常或者是否被捕获;

考虑下面三种可能出现的情况:

  • 如果try块中没有异常
  • 如果try块中有一条语句引起异常,并被catch块捕获
  • 如果try块中有一条语句引起异常,按时没有被任何catch块捕获
  1. 执行try块中的statements1语句,执行finally块中的statments4,执行try块中剩下代码statements2,statements3;
  2. statments1语句存在异常且被catch语句块捕获,跳过statements2和statements3执行catch和finally块中代码,再执行try块中下一语句;
  3. 跳过try块中语句,执行finally语句并将异常传递给这个方法的调用者;

猜你喜欢

转载自www.cnblogs.com/j2eewsm/p/11263007.html