Java-异常

异常关键词

trycatchfinallythrowthrows

示例:

public class Main {
    public static void main(String[] args) {
        try{
            String val=null;
            new Main().test(val);
        }catch(Exception e){
            System.out.println("捕捉到异常了:"+e);
        }finally{
            System.out.println("finally");
        }
    }

    public void test(String val) throws Exception{
        if(val==null){
            throw new Exception("val为空");
        }
    }
}

ps:e.printStackTrach()可以用来打印异常信息

try

监控可能会出现异常的代码块。将可能会出现异常的代码块写在里面。

catch

捕捉对应的异常并处理。

Java已经定义了一些常用的异常类。

Throwable

Error

Exception

Throwable中,除了RuntimeException和Error,其他都是checked exception(即编译器要求必须处理的异常)。

checked exception的几种处理方式:

  • 继续抛出,消极的方法,一直可以抛到java虚拟机来处理,就是通过throws exception抛出。
  • 用try...catch捕获

对于检查的异常必须处理,或者必须捕获或者必须抛出

unchecked exception的几种处理方式:

  • 捕获
  • 继续抛出
  • 不处理

一个try可以定义多个catch,catch不同类型的异常。但是catch顺序要根据异常从小到大,例如,如果同时catch了AclNotFoundException和Exception,AclNotFoundException要写在Exception的前面。因为AclNotFoundException继承自Exception,AclNotFoundException能捕获到的Exception肯定能捕获到,如果把AclNotFoundException写在Exception后面没有任何意义。有点类似if...else...。写法如下:

try{

}catch(AclNotFoundException ae){

}catch(Exception e){

}

catch中只是处理异常,不要写业务逻辑代码。

finally

不论是否发生异常,都会执行的代码。例如:释放占用的资源等。

throw和throws

throw是主动抛出异常,一般在方法体中使用。throws是在方法上抛出异常,让调用该方法的调用者去捕获。

参考文献

java异常—检查异常(checked exception)和未检查异常(unchecked exception)

posted @ 2021-03-03 16:22  伯轲  阅读(60)  评论(0)    收藏  举报