异常——JavaSE基础

异常

异常的分类

  • 检查性异常
  • 运行时异常:可能被程序员避免的异常,运行时异常可以在编译时被忽略
  • 错误ERROR:错误不是异常

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

在Java API中已经定义了许多异常类,这些异常类分为两大类,错误Error异常Exception

public class Demo02 {
    public static void main(String[] args) {
        
        try {
            System.out.println(10 / 0);
        }catch (ArithmeticException e){
            System.out.println("抛出异常!");
            System.out.println(e.getMessage());
            e.printStackTrace(); // 打印错误的栈信息
        }finally {
            System.out.println("finally语句块一般用于释放占用的资源");
        }
    }
    
}

使用Throwable捕获所有异常或错误

可以使用多层catch捕获遗漏的异常

public class Demo02 {
    public static void main(String[] args) {

        try {
            //System.out.println(10 / 0);
            int[] a = new int[10];
            a[10] = 1;
        }catch (ArithmeticException e){  // 捕获算术异常
            System.out.println("抛出异常!");
            System.out.println(e.getMessage());
            e.printStackTrace(); // 打印错误的栈信息
        }catch (Exception e){ // 捕获所有异常,用于捕获遗漏的异常
            System.out.println(e);
        }finally {
            System.out.println("finally");
        }
    }

}

自定义异常

除了可以使用Java异常类中自带的异常,也可以继承Exception类自定义一个异常

自定义异常

public class MyException extends Exception{

    private int detail;

    public MyException(int a) {
        this.detail = a;
    }

    @Override
    public String toString() {
        return "MyException{" +
                "detail=" + detail +
                '}';
    }
}

测试类

public class Demo03 {

    public static void main(String[] args) {
        try{
            demo03(11); // 修改这里的参数为小于等于10的数,则不会抛出异常
        }catch (MyException e){
            System.out.println("MyException=>" + e);
        }
    }

    static void demo03(int a) throws MyException{

        System.out.println("传递的参数为:" + a);

        // 如果a > 10则抛出异常,否则不抛出
        if (a > 10) {
            throw new MyException(a);
        }

        System.out.println("OK");
    }
}

throw是手动抛出异常,throws是方法抛出异常

posted @ 2021-06-28 11:46  HelliWrold1  阅读(51)  评论(0编辑  收藏  举报