0

これがコードの例です。ここで例外をスローしています。何らかの理由で、コードの try/catch ブロックがなくても完全に正常に動作します。

このメソッド「EntryDelete」内でこれを処理する必要がありますか、またはメソッドが呼び出された場所でこれを処理する必要がありますか? もしそうなら、例を見ることができますか?そこに何をインポートする必要がありますか? これを行うための許容される構文または方法は何ですか?

public boolean EntryDelete(int entryId) throws SQLException{
    this.open();
    kDatabase.delete(kENTRY_TABLE, kENTRY_ENTRY_ID + "=" + entryId, null);
    this.close();
    return true;            
}   

編集:メソッドの内側と外側の両方で例外を処理することについてどう思いますか?

メソッド内で処理する利点、メソッド外で処理する利点は何ですか?

ありがとう

4

2 に答える 2

1

スローされた例外は、このメソッド自体ではなく、このメソッドの呼び出し元によって処理 (さらにスローまたはキャッチ) されます。もちろん、ここに try-catch を追加することで処理することもできますが、現在のメソッドでは、スローされた可能性のある例外を呼び出し元に強制的に処理させます。

追加された質問への回答:

「メソッド内で処理する利点は何ですか、メソッド外で処理する利点は何ですか?」

悲しいことに、私が考えることができる最も包括的な正解は、メソッド内で例外を処理することの利点は、メソッドの外で例外を処理する必要がないということです。一般に、例外の処理は早ければ早いほどよいのです。これは、通常、メソッドを呼び出している人に、厳密には必要でない例外の準備を強制したくないためです。

于 2013-11-09T21:48:55.090 に答える
1

メソッドがあるので、

throws SQLException

そのため、このメソッドを呼び出すメソッドは例外を処理する必要があります。

編集:経験則はありませんが次のガイドラインを使用できます

クライアントが例外から回復するために何らかの代替アクションを実行できる場合は、例外をスローします。クライアントが何も役に立たない場合は、例外を処理します。役に立つとは、例外をログに記録するだけでなく、例外から回復するための措置を講じることを意味します。

于 2013-11-09T21:50:26.090 に答える