1. ホーム
  2. java

[解決済み】Javaの未処理例外について

2022-01-28 20:55:07

質問

現在、カスタム例外の正しい方法を学んでいる最中ですが、ある問題につまずきました。このカスタム例外を投げるクラスのオブジェクトを利用しようとすると、私のIDEのデバッガ(私はIntelliJ ideaを使用しています)は、"Unhandled Exceptionと表示します。InsertExceptionName()" と表示されます。コードは、簡略化すると、次のようになります。この場合、ランダムに生成された数字が <0.5 であれば例外を返し、そうでなければ数字を返すはずなのですが、そうではありません。 何が足りないのでしょうか?

public class main {
    public static void main(String[] args) {
        double x=Math.random();
        operation op=new operation();
        op.execute(x);
   }
}

-

public class operation {
    public operation() {
    }

    public double execute(double x) throws RandomWeirdException {
        if(x<0.5) {
            throw new RandomWeirdException("<0.5");
        }
        return x;
    }
}

-

public class RandomWeirdException extends Exception{
    public RandomWeirdException() {
        super();
    }
    public RandomWeirdException(String message) {
        super(message);
    }
}

解決方法は?

例外を返すとはどういう意味ですか?例外が発生すると、コールスタックにバブルアップされます。

この場合、処理をしていないことになります。それは main そのため、処理されない例外が発生します。

例外を処理したい場合は、その例外を処理するために try-catch ブロックを作成します。好ましくは main この場合

try {
    // Code that might throw
    // an exception.
} catch (Exception e) {
    // Handle it.
}

別の解決策としては、以下のように指定することもできます。 main は " を投げます。 RandomWeirdException "ではなく catch というのは、そもそも

public static void main(String[] args) throws RandomWeirdException { ... }

このような場合は throw ただし、例外的なケースを合理的に処理できる場合はこの限りではありません。 もし、単に catch 例外的なケースで意味のあることをせずにキャッチするために、時々エラーを隠しているのと同じことです。