5

誰かが私にJavaでのthrowsExceptionの使用法を説明できますか?メソッドが指定された例外をスローすることを示すために使用されますか?呼び出し元のメソッドは、指定された例外をキャッチする必要がありますか?

したがって、スローの代わりに、try-catchブロックを使用して例外をキャッチできますか?

スローとどう違うの?ありがとう

4

6 に答える 6

11

Javaは明示的な例外処理を使用しますRuntimeException-sを除いて、[メソッド自体によって、または呼び出すメソッドがそれを宣言するthrows]スローされるすべての例外は、メソッドシグネチャで処理または宣言する必要があります。

メソッドを呼び出すと、発生する可能性のあるエラーが正確にわかっているため、安全性が確保されます。エラーは、try/catchブロックを使用してローカルで処理するか、メソッドシグネチャの一部として宣言できます

于 2012-04-17T08:26:41.983 に答える
7

@amitはすでに非常に良い答えを出していますが、何かを追加したいだけです。

では、throw の代わりに try-catch ブロックを使用して例外をキャッチできますか?

あなたの質問のこの部分は答えられていないと思います。実際、例外に対して「透過的」なメソッドを定義するか、メソッド内でスローされた例外をキャッチするかを尋ねています。

答えは、アプリケーションによって異なります。一般に、メソッドに例外をキャッチする場合は 2 つのケースがあります。

  1. 例外と関係があるため、フローは例外がスローされたという事実に依存します。たとえば、ファイルから読み取っているときに IO エラーが発生した場合は、ファイルから再度読み取ろうとしています。
  2. アプリケーションの特定のレイヤーでスローされた例外をより高いレベルのレイヤーに公開したくない場合。この場合、コードを try ブロックでラップし、スローされた例外を他のレベルの例外でラップします。

    try { // いくつかのコード } catch(IOException e) { throw new ApplicationLevelException(e); }

他のほとんどの場合、例外に対して透過的であり、すべての例外を 1 つのポイントでキャッチして、それらをどう処理するかを把握する必要があります。たとえば、顧客向けのエラー メッセージを示します。

于 2012-04-17T08:36:11.227 に答える
0

メソッドに追加throwsすると、このメソッドはそれを呼び出すメソッドにをスローできることを意味します。Exception

例えば:

public void method1() throws Exception {
    ...
    throw new Exception();
    ...
}

public void method2() {
    try {
        method1();
    catch(Exception e) {
        ...
    }
}

方法を教えていない場合はthrowExceptionそれを使用trycatchて処理する必要があります。

例外処理の詳細については、次のドキュメントを参照してください。http: //docs.oracle.com/javase/tutorial/essential/exceptions/

于 2012-04-17T08:34:58.650 に答える
0

つまり、特定の例外に対して try-catch ブロックを使用している場合は、そこで例外を処理しています。メソッドで throws を指定すると、メソッドがそのような例外をスローできる (そしてそれ自体で処理しない) ことを宣言することになり、その例外を処理するのは呼び出し元の責任になります。

于 2012-04-17T08:31:58.473 に答える
0

適切な回答は既に与えられていますが、try-catch ブロックが使用されるたびに、例外を処理するための新しいスレッドが作成されることを追加したいと思います。これは、メイン スレッドと try-catch ブロック スレッドで実行されるアクティビティが競合を引き起こす場合に、問題を引き起こすことがあります。

そのため、 throws 句を使用して例外をスローし、API を使用するアプリケーションで例外を処理するように API メソッドを宣言することをお勧めします。

try-catch ブロックを使用するのは最後のオプションです!;)

于 2012-04-17T11:29:10.790 に答える
0

キーワードは、そのthrowsメソッドが例外をスローする可能性があることを示します。
呼び出し元が独自の例外処理を行いたいと思われる場合は、これを使用する必要があります。それ以外の場合は、try-catch ブロックを使用して、catch ブロックで指定されたエラー値を返す必要があります。たとえば、indexOf()(配列から) スローする代わりに -1 を返します。例外。

于 2012-04-17T08:30:04.097 に答える