java异常机制

1. 1、异常体系结构

  • Java把异常当作对象来处理,并定义一个基类 java.lang.Throwable 作为所有异常的超类。
  • 在Java API中已经定义了许多异常类,这些异常类分为两大类,错误Error和异常Exception

1.1. Error

73ab532df5cd10416e3241e8e081e1a9_MD5.png

1.2. Exception

2b82d845066d9a6ebcbc3dfb26c9cceb_MD5.png

1.3. Error和Exception的区别:

  • Error通常是灾难性的致命的错误,是程序无法控制和处理的,当出现这些异常时,Java虚拟机(JVM)一般会选择终止线程;
  • Exception通常情况下是可以被程序处理的,并且在程序中应该尽可能的去处理这些异常,

2. 2、捕获和抛出异常

2.1. try关键词

    public static void main(String[] args) {
        int a=10;
        int b=0;

        try{//try监控区域
            System.out.println(a/b);
        }catch(ArithmeticException e){
            System.out.println("程序出现异常,变量b不能为0");
        }finally {//处理善后工作
            System.out.println("finally");
        }

    }
}

try catch必须要,但finally可以不用
finally一般处理一些善后工作 如 scanner.close
catch(想要捕获的异常类型)

2.2. catch捕获多个异常

try{//try监控区域
    System.out.println(a/b);
}catch(ArithmeticException e){
    System.out.println("程序出现异常,变量b不能为0");
}catch(Throwable t){
    System.out.println("出现其他异常");

}finally {//处理善后工作
System.out.println("finally");

注意,异常类型要由小到大,不然就会被覆盖

快捷键 ctrl+alt+t

2.3. throw主动抛出异常

throw抛出异常通常写在方法里面

    public static void main(String[] args) {
        new Demo02().test(1,0);

    }
    public void test(int a,int b){
        if(b==0){
            throw new RuntimeException("除数不能为0");
        }
        System.out.println(a/b);
    }
}

运行后会报错,并抛出指定的异常

8517f17a37de210a61a540b00db87d71_MD5.png