web-dev-qa-db-ja.com

javaのif-else関数でエラーを発生させる方法

私が行ったすべてのグーグルは、「キャッチ」エラーに焦点を当てているようです。特定の条件が満たされた場合、私は自分自身を上げることができるようにしたい。 Error()クラスとそのサブクラスを使用してみましたが、Eclipseはそれらを認識しません。

これは私がやりたいことです:

_if(some_condition) {
    foobar();
}
else {
    // raise an error
}
_

愚かな質問ですが、私はグーグルで調べましたが、誰かが助けてくれると思います。

前もって感謝します!


みんな、ありがとう!将来これを読んでいるなら、ここにスキニーがあります:

  1. Javaのエラーは、キャッチしようとしてはならない問題を示しています

  2. 例外とは、キャッチしたいエラーのことです。

これが私の「修正済み」コードです。

_if(some_condition) {
    foobar();
}
else {
    throw new RuntimeError("Bad.");
}
_

RuntimeError()を使用したのは、1つの答えが指摘したように、エラーを事前にスローすることを宣言する必要がなく、条件に依存しているため非常に便利だからです。

皆さんありがとう!

19
Eli Dinkelspiel

どうぞ:

throw new Java.lang.Error("this is very bad");

例外のサブクラスをスローするより慣用的。特にRuntimeExceptionはチェックされていません(たとえば、メソッドはスローする可能性があることを宣言する必要はありません)。 (まあ、エラーもそうですが、回復不可能なもののために予約されているはずです)。

throw new Java.lang.RuntimeException("this is not quite as bad");

注:実際にそれらを構築する必要はありません。事前に構築されたものを投げることができます。しかし、それらを構築することの良い点の1つは、実行中のコード行と構築時に発生した完全なコールスタックを記録することです。 。

31

例外をスローしてください:

public void yourMethod() throws Exception {
    if (some_condition) {
        foobar();
    }
    else {
        throw new Exception("Something bad happened.");
    }
}
6
Tim Biegeleisen

Javaのエラーは例外と呼ばれます( こちらを参照 )。

if(some_condition){
   foobar();
} else {
   throw new Exception();
}

正式には、エラーはThrowableから拡張されるクラスです。

Throwableクラスは、Java言語のすべてのエラーと例外のスーパークラスです。このクラス(またはそのサブクラスの1つ)のインスタンスであるオブジェクトのみがJava仮想マシン、またはJava throwステートメントによってスローできます。同様に、このクラスまたはそのサブクラスの1つだけがcatch節の引数タイプになります。コンパイルの目的のために例外、Throwable、およびRuntimeExceptionまたはErrorのサブクラスでもないThrowableのサブクラスの実時間チェックは、チェック例外と見なされます。

...

https://docs.Oracle.com/javase/7/docs/api/Java/lang/Throwable.html

1
Manuel Vieda

コンソールのみでエラーを発生させようとしていますか?または、ユーザーにエラーを表示しようとしていますか?

この場合、JOptionPaneを使用してエラーダイアログボックスを作成できます。

1
Shivam Sinha

愚かさを感じる必要はありません:-)独自の例外を作成できます。

public class UnknownUnitException extends Exception{
    private String message = null;
    public UnknownUnitException() {
        super();
    }
    public UnknownUnitException(String message) {
        super(message);
        this.message = message;
    }
    public UnknownUnitException(Throwable cause) {
        super(cause);
    }
    @Override
    public String toString() {
        return message;
    }
    @Override
    public String getMessage() {
        return message;
    }
}

レッスン:Javaチュートリアル)での例外 をお勧めします

1
Tamias