0

効果的なJavaから「各メソッドによってスローされたすべての例外を文書化する

各メソッドがスローする可能性のある未チェックの例外をすべて文書化することは理想的であり、現実の世界では常に達成できるとは限らないことに注意してください。クラスがリビジョンを受けるとき、エクスポートされたメソッドが変更されて追加の未チェックの例外がスローされても、ソースまたはバイナリの互換性に違反することはありません。クラスが、独立して作成された別のクラスからメソッドを呼び出すとします。前者のクラスの作成者は、各メソッドがスローするすべての非チェック例外を慎重に文書化するかもしれませんが、後者のクラスが修正されて追加の非チェック例外がスローされる場合、前者のクラス (修正されていない) が伝播する可能性が非常に高くなります。宣言されていなくても、新しい未チェックの例外。

以前のクラスが新しいチェックされていない例外をどのように伝播できるかを理解できませんか? Java 言語では、呼び出し元が未チェックの例外をキャッチして伝播することを義務付けていません。

4

3 に答える 3

2

チェックされていない例外をキャッチしないと、それらは自動的に伝播します。

于 2012-07-20T08:35:08.537 に答える
2

例外がキャッチまたは伝播されるため、正確に伝播します。キャッチされない場合、例外が伝播します。

public void caller() {
    callee();
}

public void callee() {
    throw new RuntimeException();
}

上記の例では、からスローされた例外はメソッドcallee()によって伝播されます。caller()caller()

于 2012-07-20T08:37:19.910 に答える
0

@Geek ...はい、Java言語は未チェックの例外を処理することを義務付けていません。未チェックの例外を処理しない場合。Java 仮想マシン (JVM) は、プログラムの実行によってスローされたすべての例外を処理します。

呼び出されたメソッドが例外を処理しない場合、例外は呼び出し元のメソッドに伝達されます。Calling メソッドが Exception を処理しない場合、Exception は Java 仮想マシンに伝播し、デフォルトの例外ハンドラが有効になります。

于 2012-07-20T08:54:03.517 に答える