Java的学习笔记(16)异常处理

2023-02-13 21:31:29 浏览数 (2)

异常处理01 Error和Exception 异常 Exception

三种异常:检查行异常、运行时异常、错误(错误不是异常ERROR)

异常处理02 捕获和抛出异常 5个关键字:try、catch、finally、throw、throws

package com.exception;

public class TEST {

代码语言:javascript复制
public static void main(String[] args) {
    int a = 1;
    int b = 0;
     try{   //try监控区域
        System.out.println(a/b);
    }catch (Error e){    //cath捕获异常
         System.out.println("程序出现异常,变量b不能为0");
     }catch (Exception e){    //cath捕获异常
         System.out.println("程序出现异常,变量b不能为0");
     }catch (Throwable e){    //cath捕获异常
         System.out.println("程序出现异常,变量b不能为0");
     }finally {     //处理善后工作,也可以不需要。
         System.out.println("finally");
     }

    //catch可以有多个
    //finally 可以不要finally ,假设是IO资源,这需要finally善后工作关闭

    //快捷键:  选中想要测试的内容, CTRL   Alt   T

}

} package com.exception;

public class TEST {

代码语言:javascript复制
public static void main(String[] args) {
    int a = 1;
    int b = 0;
     try{   //try监控区域

         if (b==0){
             throw new ArithmeticException();  //主动抛出异常
         }
        System.out.println(a/b);
    }catch (ArithmeticException e){    //catch捕获异常   catch( 想要捕获的异常类型 )
         System.out.println("程序出现异常,变量b不能为0");
     }finally {     //处理善后工作
         System.out.println("finally");
     }

}

} package com.exception;

public class TEST {

代码语言:javascript复制
public static void main(String[] args) {
    try {
        new TEST().test(1,0);
    } catch (ArithmeticException e) {
        e.printStackTrace();
    }
}

//假设这方法中,处理不了这个异常。方法上抛出异常。
public  void test(int a, int b){
    if(b==0){
        throw new ArithmeticException();   //主动抛出异常,一般在方法中使用
    }
}

} 异常处理03 自定义溢出和经验小结 自定义异常类步骤:

创建自定义异常类。 在方法中通过throw关键字抛出异常对象 如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;否者在方法的声明中通过throws关键字指明抛出给方法调用者的异常,继续进行下一步操作。 在出现异常方法的调用者中捕获并处理异常。 package com.exception;

public class TEST {

代码语言:javascript复制
//可能会存在异常的方法
static void test(int a) throws MyException{
    System.out.println("传递的参数为:" a);
    if(a>10){
        throw new MyException(a);    //抛出
    }
    System.out.println("OK");
}

public static void main(String[] args) {
    try {
        test(11);
    }catch (MyException e){
        System.out.println("MyException=>" e);
    }
}

} package com.exception;

//自定义的异常类,要继承Exception public class MyException extends Exception{

代码语言:javascript复制
    //传递数字>10
private int detail;
public MyException(int a){
    this.detail = a;
}

//toString  方法构建 快捷键  ALT  INSERT
@Override
public String toString() {
    return "MyException{"  
            "detail="   detail  
            '}';
}

} 经验总结

处理运行时异常,采用逻辑去合理规避同时辅助try-catch处理 在多重catch块后面,可以加一个catch (Excetion) 来处理可能会被遗漏的异常 对于不明确的代码,也可以加上try-catch,处理异常 ,也有快捷键 ALT ENTER 尽量去处理异常,切忌只是简单地调用printStackTrace() 去打印输出 具体如何处理异常,要根据不同的业务需求和异常类型去决定 尽量添加finally语句块去释放占用的资源

0 人点赞