自定义异常

449 阅读2分钟

「这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战

自定义异常的必要? java无法为这个世界上全部的问题提供异常类。 如果企业想通过异常的方式来管理自己的某个业务问题,就需要自定义异常类了。

自定义异常的好处: 可以使用异常的机制管理业务问题,如提醒程序员注意 同时一旦出现bug,可以用异常的形式清晰的指出出错的地方。

image.png

自定义异常的分类:

1.自定义编译时异常

定义一个异常类继承Exception

重写构造器

在出现异常的地方用throw new 自定义对象抛出

作用:编译使异常是编译阶段就报错,提醒更加强烈,一定需要处理。

2、自定义运行时异常:

定义一个异常类继承 RuntimeException

重写构造器

在出现异常的地方用throw new 自定义对象抛出

作用:提醒不强烈,编译阶段不报错。运行时才能出现!

自定义编译时异常:

public class ExceptionDemo {
    public static void main(String[] args) {
        try {
            checkAge(-34);
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public static void checkAge(int age) throws ItheimaAgeIlleagealException{
        if (age < 0 || age > 200){
            // 抛出去一个异常对象给调用者
            // throw:在方法内部直接创建一个异常对象,并从此点抛出
            // throws: 用在方法声明上的,抛出方法内部的异常
            throw new ItheimaAgeIlleagealException(age + "is illegal");
        }else {
            System.out.println("年龄合法:推荐商品给其购买~~");
        }
    }
}

public class ItheimaAgeIlleagealException extends Exception{
    public ItheimaAgeIlleagealException(){

    }

    public ItheimaAgeIlleagealException(String message){
        super(message);
    }
}

自定义运行时异常:

public class ExceptionDemo {
    public static void main(String[] args) {
        try {
            checkAge(-34);
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    public static void checkAge(int age){
        if (age < 0 || age > 200){
            // 抛出去一个异常对象给调用者
            // throw:在方法内部直接创建一个异常对象,并从此点抛出
            // throws: 用在方法声明上的,抛出方法内部的异常
            throw new ItheimaAgelleagalRuntimeException(age + "is illegal");
        }else {
            System.out.println("年龄合法:推荐商品给其购买~~");
        }
    }
}

public class ItheimaAgelleagalRuntimeException extends RuntimeException{
    public ItheimaAgelleagalRuntimeException(){

    }

    public ItheimaAgelleagalRuntimeException(String message){
        super(message);
    }
}

image.png