异常机制

Posted on 2024-07-12 19:42  琴音似君语  阅读(3)  评论(0编辑  收藏  举报

异常机制

什么是异常?

简单分类

异常体系结构

Error

Exception

异常出来机制

  1. 抛出异常

  2. 捕获异常

  3. 异常处理五个关键字

    try、catch、finally、throw、throws

public class Test {
    public static void main(String[] args) {
        int a = 1;
        int b = 0;
        //快捷键 Ctrl+Alt+T
        //假设要捕获多个异常:从小到大
        try { //try监控区域
            //new Test().a();
            System.out.println(a/b);
        }catch(ArithmeticException e) { //catch 异常捕获
            System.out.println("除数不能为0");
        }catch (Exception e){
            System.out.println("Exception,异常");
        }catch (Throwable e){
            System.out.println("Throwable");
        }
        finally { //处理善后工作
            System.out.println("程序结束");
        }

        //finally 可以不要finally,假设IO,资源,关闭!
    }
    public void a(){
        b();
    }
    public void b(){
        a();
    }
}
public class Test2 {
    public static void main(String[] args) {
        int a = 1;
        int b = 0;
        //快捷键 Ctrl+Alt+T
        try {
            System.out.println(a/b);
        } catch (Exception e) {
            e.printStackTrace(); //打印错误的栈信息
        } finally {
        }
    }
    //假设在方法中,处理不了这个异常,方法上抛出异常
    public void test(int a,int b) throws ArithmeticException{
        if (b==0){
            //主动的抛出异常,一般在方法中使用
            throw new ArithmeticException("除数不能为0");
        }
    }
}

自定义异常

//自定义的异常类
public class MyException extends Exception{

    //传递数字>10
    private int detail;

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

    //toString:异常的打印信息
    @Override
    public String toString() {
        return "MyException{" +
                "detail=" + detail +
                '}';
    }
}
public class Test1 {

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

实际应用中的经验总结

Copyright © 2024 琴音似君语
Powered by .NET 9.0 on Kubernetes