异常

异常

  • 什么是异常
  • 异常体系结构
  • Java异常处理机制
  • 处理异常
  • 自定义异常
  • 总结

Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类

这些异常类分为两大类,错误Error和异常Exception

Error(错误)

大多数错误与代码编写者所执行的操作无关,一般是Java虚拟机运行错误

Exception(异常)

  • 抛出异常
  • 捕获异常

异常处理五个关键字:try catch finally throw throws

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

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

    }
}

catch(想要捕获的异常类型),最高的是Throwable,所有异常都可以检测到

e.printStackTrace();输出系统的异常

throw和throws的区别

throw可以主动抛出异常以使程序停止,而try catch语句在发现异常后仍会正常执行

throws是在声明方法时使用,throws如果在方法体中不用try catch捕获异常而采用直接抛出的方法时需要在声明方法时通过throws关键字指明要抛出给方法调用者的异常

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

        try{
            new Test().test(1,0);
        }catch (ArithmeticException e) {
            e.printStackTrace();//输出异常信息
        }


    }
    public void test(int a , int b) throws ArithmeticException{//throws如果在方法体中不用try catch捕获异常而采用直接抛出的方法时需要在声明方法时通过throws关键字指明要抛出给方法调用者的异常
        if (b == 0){
            throw new ArithmeticException();
        }else {
            System.out.println(a/b);
        }
    }
}

自定义异常

MyException.java

package exception;

public class MyException extends Exception{
    //传递数字>10
    private int detail;
    public MyException(int a){
        detail = a;
    }
    //toString:异常的打印信息
    @Override
    public String toString() {
        return "MyException{" + "detail=" + detail + '}';
    }
}

Test.java

public class Test {
    //可能会存在异常的方法
        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);
        }
    }
}

输出结果为

传递的参数为:11
MyException=>MyException{detail=11}
posted @ 2025-04-23 12:06  CtrlRap  阅读(16)  评论(0)    收藏  举报