質問

私は多くの計算で科学的なソフトウェアを構築していますが、もちろん議論が間違った長さなどを持つ可能性があります...だから私は使用しました IllegalArgumentException 問題の正しい名前のように思われたクラスですが、私は throws IllegalArgumentException 関数定義で?

私はそれを書いた後、Eclipseの編集者が試してみて機能を囲むように頼まなかったので、私はこれを尋ねています。これがTry The Catchがどのように施行されたかだと思いました。 java.comで例外処理チュートリアルを読んだことがありますが、自分の質問に関する部分を正しく理解しているかどうかはわかりません。

役に立ちましたか?

解決

RuntimeExceptionsのように IllegalArgumentException 示すために使用されます プログラミングエラー. 。プログラム自体がそれを処理することはめったにないはずです。誰かがコードを手動で修正する必要があります。

潜在的な RuntimeExceptionSは、明示的なもので、関数契約(すなわちJavadoc)に何らかの形で文書化する必要があります @throws, 、または入力を説明しながら。関数のJavadocがない場合は、関数を使用する潜在的な落とし穴を文書化するためだけにThrows句を追加することをお勧めしますが、一般的にはランタイムの例外のためにスロー条項を追加することが推奨されます。

間違った長さを与えることが実際にプログラミングエラーではなく、例外の状況である場合、新しいチェックされた例外(BadLengthErrorなど)を作成します。例外的な状況ではない場合は、フロー制御に例外を使用しないでください。

他のヒント

例外には2つのタイプがあります。

ランタイムの例外(たとえば、IllegalargumentExceptionやnullpointerexceptionなど)は、「発生してはならない」ため、明示的にキャッチする必要はありません。もちろん、彼らがそうするとき、あなたはどこかでそれらを処理する必要があります。

定期的な例外は、より本質的に難しい種類のエラーを表すため、キャッチまたはスローされると宣言される必要があります。

未チェックの例外 - runtimeexceptionから継承する例外について読む必要があります。メソッドヘッダーで宣言する必要はありません。

http://download.oracle.com/javase/tutorial/essenty/exceptions/runtime.html

最後の段落はそれを要約します:

クライアントが例外から回復することが合理的に期待できる場合は、それをチェックされた例外にします。クライアントが例外から回復するために何もできない場合は、未確認の例外にします。

IllegalArgumentException (たとえば、他の人と一緒に NullPointerException)の例です RuntimeException. 。このタイプの例外は、 確認された例外. 。 Javaでは、スローする例外をチェックした方法を宣言し、呼び出されたメソッドがチェックされた例外をスローする可能性がある場合、呼び出し方法は例外自体をスローすることを宣言するか、キャッチして処理する必要があることを要求します。

そのため、私の具体的な推奨事項はノー、それを宣言しないでください。確かに、あなたはそれを捕まえたくありません。ほとんどの場合、あなたもそれを投げたくない そうでもなければ これは 予期しない 行動。メソッドが気に入らない値を取得することが非常に正常で合理的である場合、例外はそれを処理するための間違った方法です。

また、アサーションを使用することを検討することもできます。

例外を理解するときの最初のポイントは、それらが例外的な状況のためであるということです。あなたの方法について考えている間、あなたは次のように尋ねなければなりません:「この方法は、例外的な値が通過した場合、例外をスローする必要がありますか?」答えが「はい」の場合は、メソッド宣言に入れてください。あなたがアイデアを得るかどうかはわかりませんが、それはちょっと簡単です。それはただの練習の問題です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top