javaodcを作成するとき、あなたは例外を記述し、あなたの方法は右、投げることができますか?
examlpleを見てみましょう:
public void createLogFile() {
try {
file.createNewFile();
fileWriter = new FileWriter(file);
bufferedWriter = new BufferedWriter(fileWriter);
} catch (IOException e) {
MainScene.ausgabeText.setText("Fehler bei dem Erstellen des Log Files.");
}
}
つまり、このメソッドのための私のjavadocです。
/**
* A logfile will be created
* @exception IOException
* When the log file coulndt be created ( just a test :-))
*/
javadocをエクスポートする場合、Eclipseは私に語りました:
error: exception not thrown: java.io.IOException
* @exception IOException
しかし、Eclipseは、私はその例外をキャッチしたいと考えています。
なぜEclipseは私に上記のエラーメッセージを与えていますか?
あなたがメソッドを記述する場合、実装は(あなた自身がそれを書いた場合は、メソッドの実装を見ることができるという事実を無視して)、発信者から隠されています。時には、メソッドの実装では、あなたは、例外が発生します(またはあなたも、カスタム例外をスローする可能性があります)。あなたができることが2つあります:
キャッチ
あなたがするときは、例外をキャッチすることができたいそれを処理します。ことは、あなたが何かを知っている可能性が間違って行くと、あなたはとてもそれが起こる場合、プログラムは予測可能な方法で続けることができることを何をすべきか知っています。
発信者が実装を見ることができないので、それは完全に彼らから隠されています。
スロー
それがあるので、あなたは、例外を処理したくない場合は、より適切な呼び出し側にこの問題を認識し、それを処理するため。この場合、あなたはしないでくださいcatch
、それをして、それを追加しますException
経由する方法にthrows
キーワード。これを行うと、あなたは可能追加@throws
や@exception
、彼らが特定の例外を受け取ることを期待するとき、正確に、発信者に伝えるために、メソッドのJavadocに注釈を。
その注釈が唯一期待するとどのように適切にメソッドによってスローされた例外を処理するために、ときに、呼び出し元を伝えるのに役立つので、メソッドによってスローされていない任意の例外を追加することは無意味です。
あなただけに必要とされていることに注意してくださいthrows
チェック例外。方法は、経由で未チェックの例外をリストする必要はありません。throws
彼らは通常、下手に書かれたコードによって引き起こされるとして、。