-1

Java のチェック例外を理解しようとしており、次のクエリがあります。

次は正しいですか: メソッドが任意のタイプのチェック済み例外をスローする可能性がある場合、その例外は次のいずれかでなければなりません。

  1. throwsキーワードを使用して宣言された、または
  2. それぞれの方法でキャッチ。

上記が正しい場合、Java に組み込まれているすべてのチェック済み例外を理解して、メソッドがその例外をスローする可能性があるかどうかを知る必要があるということですか? それとも、コードをコンパイルしてから、コンパイル時のエラーに基づいてコードを修正する必要がありますか?

4

5 に答える 5

0

上記が正しければ

それは...

[...]これは、メソッドがその例外を生成する可能性があるかどうかを知るために、Java に組み込まれているすべてのチェック済み例外を理解する必要があるということですか? それとも、コードをコンパイルしてから、コンパイル時のエラーに基づいてコードを修正する必要がありますか?

IDE を使用してください。それらすべてを詳しく知る必要はありません。

ただし、チェックしたいのは階層です (つまり、javadoc をチェックしてください! これはパブロフ反射である必要があります)。例外はクラスであるため、互いに継承し、たとえば、FileSystemExceptionファイルシステム関連の問題を通知するための java.nio.file のかばん例外であり、IOException. IOException特別扱いしたい場合は、事前にキャッチしてください。

原則として、より具体的な例外を最初にキャッチします

また、キャッチしないでExceptionください。一度もない。問題は、チェックさRuntimeExceptionれていない例外の基本例外である がを継承していることです。つまり、キャッチすると、チェックされていない例外をすべてキャッチすることになります。チェックされていないものを再スローしたい:ExceptionException

try {
    something();
} catch (RuntimeException unchecked) {
    throw unchecked;
} catch (Exception e) {
    // deal with e
}
于 2015-01-11T13:30:46.707 に答える
0

上記が正しい場合、Java に組み込まれているすべてのチェック済み例外を理解する必要があるということですか [...]?

はい、あなたのステートメントは正しいですが、プログラミング時にすべての潜在的なチェック例外を知っているとは誰も期待していません。また、手元にコンパイラ、またはより良い IDE があれば、その必要はありません。

質問で提案したように、コンパイラの出力とコードの間を行ったり来たりするか、ルールに違反した場合に直接通知する Eclipse などの IDE をインストールします。

ここに画像の説明を入力

于 2015-01-11T13:27:08.780 に答える
0

これは、Java に組み込まれているすべてのチェック済み例外を理解する必要があるということですか?

いくつかの IDE (Eclipse など) を使用していると思います。そうでない場合は、できるだけ早く入手する必要があります。

その後、IDE はほぼ継続的にコードをコンパイルします。そのため、問題が発生すると、その近くに赤い下線が表示され、何が問題なのかを示すツールチップ バブルが表示されます。たとえば、「Missing throws」などです。

したがって、2番目の仮定は基本的に正しいです。それは舞台裏で起こるだけです:

それとも、コードをコンパイルしてから、コンパイル時のエラーに基づいてコードを修正する必要がありますか?

いいえ、すべての例外を学ぶ必要はありません。

また、チェック済みのすべての例外は extendsExceptionであるため、ソースにアクセスできる場合は、それらが何に基づいているかを確認できます。チェックされていない例外は拡張されRuntimeExceptionます。

経験則: I/O を伴うものであれば、通常はチェックされます。これは、遭遇する最も一般的なタイプの例外です。

于 2015-01-11T13:27:28.020 に答える
0

whenever you use a method (whether your own or In-built) if you closely follow its method signature, if the method throws some exception you need to throw/handle it explicitly in your code

このようにして、すべての例外を記憶する必要がなくなり、どの例外をどこで処理するかがわかります。

生活を楽にするために、EclipseのようなIDEを使用してください

お役に立てれば!

幸運を!

于 2015-01-11T13:28:26.230 に答える
0

はい、すべての例外を知る必要があります..ただし、その例外のスーパークラスを知っている場合は、そのサブクラスを知る必要はありません...たとえば、FileReader は FileNotFoundException という例外をスローします FileNotFoundException は IOException のサブクラスであるため、throws リストで IOException を指定するだけで、上記のプログラムをコンパイラ エラーなしにすることができます。

于 2015-01-11T14:33:05.030 に答える