Javaの例外トリガーはすべて、throwを介してアクティブにスローされます

質問:APIのランタイム例外のように、カスタムランタイム例外を自動的にスローするにはどうすればよいですか?カスタムランタイム例外を作成するときは、スローする前に常にアクティブにスローする必要があります。

例:次のコードを実行すると、コントロールは自動的に異常な情報を表示します

 

回答:APIの例外も、APIの作成者自身によってスローされます。これは、自分で作成したカスタム例外と同じです。誰かがあなたが書いたコードをAPI呼び出しとして使用すると、あなたが定義した例外が自動的にスローされたと誰かが考えるでしょう。Javaの例外は、throwによってアクティブにスローされます。

ランタイム例外スローを実装する手順

1.自分で例外クラスを定義する

2.対応する例外情報をコンソールに表示する場合は、新しい例外class();をスローします。

public class Demo {
    public static void main(String[] args) {
        //运行时,当调用这个方法,程序会进入对应的else if里面,就会创建一个异常类对象,并抛出,
        //JVM收到这个对象,就会在操作台显示异常信息                           
        judgeAgeRuntime(-1);

        //输入这行代码就会出错,因为该方法在声明就抛出编译时异常,
        // 表示该方法可能有异常,当我在方法里不想自己处理,让调用该方法的人去处理,
        // 所以必须有人用try-catch手动接收并处理异常,否则编译不会通过
        judgeAge(10);

    }

    public static void judgeAgeRuntime(int age){
        //判断传入的年龄是否合法
        if (age >  150){
            //不合法的年龄
            throw  new IllegalAgeRuntimeException("你活不了那么大岁数,你就是普通人");
        }
        else if (age < 0 ){
            //不合法的年龄,用了异常类的有参构造方法
            throw new IllegalAgeRuntimeException("你的年龄不可能是负数");
        }
    }
    public static void judgeAge(int age) throws IllegalAgeException {
        //判断传入的年龄是否合法
        if (age >  150){
            //不合法的年龄
            throw  new IllegalAgeException("你活不了那么大岁数,你就是普通人");
        }
        else if (age < 0 ){
            //不合法的年龄
            throw new IllegalAgeException("你的年龄不可能是负数");
        }
    }
}
//自定义的年龄不合法运行时异常类
//一定要继承RuntimeException
class IllegalAgeRuntimeException extends RuntimeException{
//里面的内容就模仿JDK自带的异常类内容就行了,不清楚原理
    public IllegalAgeRuntimeException() {
        super();
    }
 //每个异常类的构造方法都可以显式传入一个字符串,表示异常信息(原因)的说明
    public IllegalAgeRuntimeException(String message) {
        super(message);
    }
}

//自定义的年龄不合法编译时异常类
//一定要继承RException
class IllegalAgeException extends Exception{
    public IllegalAgeException() {
        super();
    }
    public IllegalAgeException(String message) {
        super(message);
    }
}

 

おすすめ

転載: blog.csdn.net/qq_43496435/article/details/113774039