私はこのようなコードで例外をスローしようとしています:
throw RuntimeException(msg);
しかし、NetBeansでビルドすると、次のエラーが表示されます。
C:\....Java:50: cannot find symbol
symbol : method RuntimeException(Java.lang.String)
location: class ...
throw RuntimeException(msg);
1 error
何かをインポートする必要がありますか?スペルを間違えていますか?私は何か愚かなことをしているに違いないと思う:-(
throw new RuntimeException(msg);
そこにnew
が必要です。メソッドを呼び出すのではなく、インスタンスを作成してスローしています。
Exception
は、Javaの他のものと同様のObject
です。 new
を使用する前に、Exception
キーワードを使用して新しいthrow
を作成する必要があります。
throw new RuntimeException();
オプションで、次のこともできます。
RuntimeException e = new RuntimeException();
throw e;
両方のコードスニペットは同等です。
他のみんなが言ったように、オブジェクトをスローする前にインスタンス化します。
少しだけ追加したかった。 RuntimeExceptionをスローすることは非常にまれです。 APIのコードがこのサブクラスをスローするのは正常なことですが、通常、アプリケーションコードは例外、またはRuntimeExceptionではなく例外を拡張するものをスローします。
そして振り返ってみると、RuntimeExceptionの代わりにExceptionを使用する理由whyを追加できませんでした。 @Jayは、以下のコメントで、有用なビットに追加されました。 RuntimeExceptionはチェック済みの例外ではありません。
投げる前にインスタンス化する必要があります
throw new RuntimeException(arg0)
PS:Netbeans IDEはコンパイル時エラーをすでに指摘しているはずです
throw new RuntimeException(msg); // notice the "new" keyword
他のほとんどのクラスのインスタンスを作成するのと同じ方法で、new
を使用してRuntimeExceptionのインスタンスを作成する必要があります。
throw new RuntimeException(msg);
throw new RuntimeException(msg);
他の例外とは異なり、プログラムを停止させないのはRuntimeExceptionだけだと思いますが、実行を続けて、例外行を出力するだけで回復できますか?私が間違っている場合は修正してください。
他の人のために:引数としてエラーを必要とする新しいRuntimeErrorExceptionではなく、新しいRuntimeExceptionであることを確認してください。
新しいキーワードを使用して、常にインスタンス(新しいオブジェクト)を作成し、それをスローします。メソッドとは呼ばれません
throw new RuntimeException("Your Message");
You need the new in there. It's creating an instance and throwing it, not calling a method.
int no= new Scanner().nextInt(); // we crate an instance using new keyword and throwing it
新しいキーワードを使用してメモリクリーン[使用してスローするため]
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//do your work here..
}
}, 1000);