伙伴云客服论坛»论坛 S区 S软件开发 查看内容

0 评论

0 收藏

分享

finally 一定会执行(实例代码)

如下所示:
  1. class Exc{
  2. int a;
  3. int b;
  4. }
  5. public class Except {
  6. @SuppressWarnings("finally")
  7. static int compute (){
  8. Exc e = new Exc();
  9. e.a = 10;
  10. e.b = 10;
  11. int res = 0 ;
  12. try{
  13.   res = e.a / e.b;
  14.   System.out.println("try ……");
  15.   return res + 1;
  16. }catch(NullPointerException e1){
  17.   System.out.println("NullPointerException occured");
  18. }catch(ArithmeticException e1){
  19.   System.out.println("ArithmeticException occured");
  20. }catch(Exception e3){
  21.   System.out.println("Exception occured");
  22. }finally{
  23.   System.out.println("finnaly occured");
  24. }
  25. System.out.println(res);
  26. return res+3;
  27. }
  28. public static void main(String[] args){
  29. int b = compute();
  30. System.out.println("mian b= "+b);
  31. }
  32. }
复制代码
输出:
  1. try ……
  2. finnaly occured
  3. mian b= 2
复制代码
结论: 假设没有异常, 则执行try 中的代码块,直到 try 中的 return,接着执行 finally 中的代码块,finally 执行完后 , 回到try 中执行 return 。退出函数。
  1. class Exc{
  2. int a;
  3. int b;
  4. }
  5. public class Except {
  6. @SuppressWarnings("finally")
  7. static int compute (){
  8. Exc e = new Exc();
  9. // e.a = 10;
  10. // e.b = 10;
  11. int res = 0 ;
  12. try{
  13.   res = e.a / e.b;
  14.   System.out.println("try ……");
  15.   return res + 1;
  16. }catch(NullPointerException e1){
  17.   System.out.println("NullPointerException occured");
  18. }catch(ArithmeticException e1){
  19.   System.out.println("ArithmeticException occured");
  20. }catch(Exception e3){
  21.   System.out.println("Exception occured");
  22. }finally{
  23.   System.out.println("finnaly occured");
  24. }
  25. System.out.println(res);
  26. return res+3;
  27. }
  28. public static void main(String[] args){
  29. int b = compute();
  30. System.out.println("mian b= "+b);
  31. }
  32. }
复制代码
输出:
  1. ArithmeticException occured
  2. finnaly occured
  3. 0
  4. mian b= 3
复制代码
结论: 假设try 中有异常, 则在异常语句处,跳转到catch 捕获的异常代码块, 执行完 catch 后,再执行 finally ,跳出 try{}catch{}finally{} ,继续向下执行,不会去执行try中 后面的语句。
以上这篇finally 一定会执行(实例代码)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持网站。

回复

举报 使用道具

全部回复
暂无回帖,快来参与回复吧
本版积分规则 高级模式
B Color Image Link Quote Code Smilies

凉凉
注册会员
主题 23
回复 19
粉丝 0
|网站地图
快速回复 返回顶部 返回列表