Java in a Nutshellでは、メソッドがスローできるチェック例外を宣言する必要があると言います(throws
)。メソッドが投げることができるチェックされていない例外を宣言する必要はありますか?
我々は方法がthrows
またはその他の方法により、投げることができることをすべてのチェックされない例外を宣言する必要がある場合、私は思っていましたか?
答えがチェックされない例外は、事前定義または自己定義されているかどうかに依存していますか?
ありがとうございました。
Java in a Nutshellでは、メソッドがスローできるチェック例外を宣言する必要があると言います(throws
)。メソッドが投げることができるチェックされていない例外を宣言する必要はありますか?
我々は方法がthrows
またはその他の方法により、投げることができることをすべてのチェックされない例外を宣言する必要がある場合、私は思っていましたか?
答えがチェックされない例外は、事前定義または自己定義されているかどうかに依存していますか?
ありがとうございました。
未確認の例外を宣言しますが、はにする必要はありません。チェックされていない例外が組み込まれているのか、自分で書いたのかは関係ありません。
いいえ、あなたはthrows
でチェックされない例外を宣言する必要はありません。あなたがすることができ
/**
* @throws {@link MyUncheckedException} whenever blah blah case occurs
*/
が、未確認宣言する必要はありません:未確認の例外は次のように、javadocのセグメントにスローされる可能性がある宣言するために - あなたの将来の自己を含む -
それはあなたの関数を使用して、将来の開発者に役立つかもしれませんあなたが自分で宣言したかどうかにかかわらず、例外を除きます。 RuntimeExceptionから継承
例外は未チェックです。
チェックされていない例外は実行時例外です。つまり、スローを使わなくても、コンパイルして実行します。 ArithmeticExceptionは未チェックの例外ですが、スローを使用しない場合でも、誰かがその例外をスローする値を使用するまで、プログラムはコンパイルされ実行されます。
したがって、行内にはありません。COMPULSORY未確認の例外でthrowを使用します。
"メソッドのAPIを記述することができれば、それがスローできる例外も含めて、実行時の例外も指定しないのはどうですか?ランタイム例外は、プログラミングの問題の結果である問題を表しているため、APIクライアントコードは、APIクライアントコードから回復したり、何らかの形で処理することは合理的に期待できません。このような問題には、ゼロ除算などの算術例外が含まれます。 null参照によってオブジェクトにアクセスしようとするなどのポインタ例外。大きすぎるまたは小さすぎるインデックスを使用して配列要素にアクセスしようとするなど、例外のインデックス付けを行うことができます。 – Andrew