私が行ったすべてのグーグルは、「キャッチ」エラーに焦点を当てているようです。特定の条件が満たされた場合、私は自分自身を上げることができるようにしたい。 Error()クラスとそのサブクラスを使用してみましたが、Eclipseはそれらを認識しません。
これは私がやりたいことです:
_if(some_condition) {
foobar();
}
else {
// raise an error
}
_
愚かな質問ですが、私はグーグルで調べましたが、誰かが助けてくれると思います。
前もって感謝します!
みんな、ありがとう!将来これを読んでいるなら、ここにスキニーがあります:
Javaのエラーは、キャッチしようとしてはならない問題を示しています
例外とは、キャッチしたいエラーのことです。
これが私の「修正済み」コードです。
_if(some_condition) {
foobar();
}
else {
throw new RuntimeError("Bad.");
}
_
RuntimeError()
を使用したのは、1つの答えが指摘したように、エラーを事前にスローすることを宣言する必要がなく、条件に依存しているため非常に便利だからです。
皆さんありがとう!
どうぞ:
throw new Java.lang.Error("this is very bad");
例外のサブクラスをスローするより慣用的。特にRuntimeExceptionはチェックされていません(たとえば、メソッドはスローする可能性があることを宣言する必要はありません)。 (まあ、エラーもそうですが、回復不可能なもののために予約されているはずです)。
throw new Java.lang.RuntimeException("this is not quite as bad");
注:実際にそれらを構築する必要はありません。事前に構築されたものを投げることができます。しかし、それらを構築することの良い点の1つは、実行中のコード行と構築時に発生した完全なコールスタックを記録することです。 。
例外をスローしてください:
public void yourMethod() throws Exception {
if (some_condition) {
foobar();
}
else {
throw new Exception("Something bad happened.");
}
}
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
コンソールのみでエラーを発生させようとしていますか?または、ユーザーにエラーを表示しようとしていますか?
この場合、JOptionPaneを使用してエラーダイアログボックスを作成できます。
愚かさを感じる必要はありません:-)独自の例外を作成できます。
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チュートリアル)での例外 をお勧めします