/ / Pythonのraiseの例外Java( "何かが間違っていた")[閉じる] - java

Pythonのraiseと同等のJava( "何かが間違っていた")[閉じる] - java

より具体的な例外のどれを使用すべきかをあまり考えずに、Javaで汎用例外を発生させる最良の方法は何ですか?私は考えている(しかし、これが最善であるかどうかは分からない):

throw new RuntimeException("Something went wrong");

回答:

回答№1は1

それはどのような種類の例外であるかに少し依存します。 Javaでは、これはJavaに関して最も批判的なことの1つであると付け加えておきます。チェックされている例外とチェックされていない例外があります。

  • チェックされた例外( java.lang.Excetption、からではなく java.lang.RuntimeException)は、リソースや操作に何か問題が生じた場合にスローされます。これは多かれ少なかろうと予想されます。ファイルが見つからず、ネットワークリンクがダウンしたなど
  • チェックされていない例外( java.lang.RuntimeException)は、ほとんどの場合、言語やライブラリによってスローされ、コードにバグがあるためにスローされます

再び、加熱された状態になるのは非常に簡単ですこれについての議論は、あなたの質問の範囲を超えています。 C#の背後にいる人はJavaを見て、 "私はそれを持っていることにはなりません"とチェックした例外をすべて取り除いた。

しかし、これはJavaであるため、例外。したがって、Javaが設計されたやり方をしたい場合は、間違ったことの種類に基づいてチェック済みまたは未チェックの例外をスローする必要があります。

すべてのことを言っているが、プログラマはチェックされていない例外をますます使用しています。これは、主にチェック例外は、あなたが知っているものの痛みであり、意味のある例外処理は言語を設計するときと同じくらい現実的には明確ではないからです。


回答№2の場合は0

はい、あなたは正しい、これは世界にできる:

throw new RuntimeException("error message");

もう少し具体的な例外を行うこともできます

throw new IllegalArgumentException("error message");
throw new IllegalStateException("error message");
throw new UnsupportedOperationException("error message");

回答№3の場合は0

新しいRuntimeExceptionをスローする( "message"); //メソッドシグネチャでこれを宣言する必要はありません。

void doSomething1() {
throw new RuntimeException("");
}

新しい例外( "message")を投げる; //メソッドシグネチャでこれを宣言しなければなりません。次のように:

void doSomething2() throws Exception{
throw new Exception("");
}

回答№4の場合は0

Javaにはさまざまな種類の例外があります。 Throwable, Error, Exception そして RuntimeException。 SonarQubeによると(イカ:S1181)、 Throwable Javaのすべてのエラーと例外のスーパークラスです。 Error アプリケーションによって検出されないようにするすべてのエラーのスーパークラスです。したがって、チェックされた例外 Exception またはチェックされていない例外(別名ランタイム例外) RuntimeException.

より具体的な例外のどれを使用すべきかをあまり考えずに、Javaで汎用例外を発生させる最良の方法は何ですか?

あなたが言ったように、あなたはランタイム例外をスローすることができます。私は個人的にはより意味のある例外タイプを好みますが、それはあなた次第です。 Javaで最も一般的に使用される例外、 といった:

  • IllegalStateException
  • IllegalArgumentException

参照: Java言語仕様、§11。例外