码迷,mamicode.com
首页 > 其他好文 > 详细

try-catch-finally块finally中程序执行问题

时间:2021-03-15 11:01:51      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:key   匹配   item   ber   数据   停止   out   comment   自动   

1、异常处理格式

try{
   //可能存在异常的代码
} catch(异常类型 对象名) {
   //异常处理
} finally{
   //异常出口
}

2、处理流程

  • 产生异常,自动生产一个异常类的实例化对象

  • 异常在try语句中,自动找到匹配的catch语句执行,如果没在tyr语句中,则会抛出异常

  • catch根据方法的参数匹配异常类的实例化对象,匹配成功,则由此catch处理异常

  • finally中的代码不管是否产生异常,都将执行

3、常见难题

3.1、return

try中执行了return语句,finally中的语句依然执行

public class Demo01 {
   public static void main(String[] args) {
       ha();
  }
   public static void ha(){
       try{
           System.out.println("1");
           return;
      }catch(Exception e){
      }finally {//会执行
           System.out.println("我会执行");
      }
  }
}

3.2、finally语句中更改数值

public class Demo02 {
   public static void main(String[] args) {
       Person p = ha();
       System.out.println(p.age);//输出28 因为p是对象
  }
   public static Person ha() {
       Person p = new Person();
       try {
           p.age = 18;
           return p;
      } catch (Exception e) {
           return null;
      } finally {
           p.age = 28;
      }
  }
   static class Person {
       int age;
  }
}
public class Demo03 {
   public static void main(String[] args) {
       int a = ha();
       System.out.println(a);//输出10,因为a是基本数据类型
  }
   public static int ha(){
       int a = 10;
       try{
           return a;
      }catch(Exception e){
?
      }finally {
           a = 20;
      }
       return 0;
  }
   static class Person{
       int age;
  }
}

3.3、finally语句不执行

只有当程序结束了才不会执行,比如电脑断电了,JAVA虚拟机停止了

public class Demo04 {
   public static void main(String[] args) {
?
       ha();
  }
   public static void ha(){
       try{
           int a = 10;
           int b = 0;
           System.out.println(a/b);
      }catch(Exception e){
           //退出JVM
           System.out.println("出现了异常");
           System.exit(0);
      }finally {
           System.out.println("锄禾日当午,汗滴禾下土");//不会执行
      }
  }
}
?

 

try-catch-finally块finally中程序执行问题

标签:key   匹配   item   ber   数据   停止   out   comment   自动   

原文地址:https://www.cnblogs.com/zhiyuanqiyuan/p/14527703.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!