-3

コードで try catch ブロックを使用します。ここで聞きたいのは、finally ブロックを使用することは良い習慣だということです。コード内の最終ブロックはあまり見たことがありません。それは悪い習慣ですか?

4

4 に答える 4

5

Catch : 何かがうまくいかないとき。
最後に:何かがうまくいかないとき。

最後にブロックは、例外がスローされたかどうかにかかわらず、何かをしたいときに役立ちます。データベース接続を閉じる、リソースを解放するなど。キャッチは例外がスローされたときにのみ実行されるため、キャッチブロックでこれを行うことはできません。

Q: いつ使用しますtry-catchか?
回答:例外がスローされたときに何かをしたい

Q: いつ使用しますtry-finallyか?
Ans: 例外がスローされてもされなくても、何かをしたい。

Q: いつ使用しますtry-catch-finallyか?
回答: 例外がスローされた場合にのみ x を実行し、例外がスローされたかどうかに関係なく y を実行したい場合。

これを要約すると

try{  

//.....

}
catch{  
   // Something you want to do only when exception is thrown
   // Like OMG evil execption RUN RUN
}  
finally{
   // Something you want to do even the exception is thrown or not  
   // Like who the hell cares about exception
}
于 2013-04-08T13:37:10.450 に答える
1

例外を処理する必要があり、エラーが発生した場合にコードを実行する必要がある場合 (通常はクリーンアップ、リソースの破棄) は、確かに良い方法です。

「例外処理のベスト プラクティス」からの引用 ( http://msdn.microsoft.com/en-us/library/seyhszts(v=VS.71).aspx ):

例外を生成する可能性のあるコードの周りに try/finally ブロックを使用し、catch ステートメントを 1 つの場所に集中させます。このように、try ステートメントは例外を生成し、finally ステートメントはリソースをクローズまたは割り当て解除し、catch ステートメントは中央の場所から例外を処理します。

于 2013-04-08T13:40:24.603 に答える
1

finally を使用することをお勧めします。例外の発生に関係なく実行されます。

于 2013-04-08T13:41:37.300 に答える
1

プログラムでデータベース操作を行っている場合finally blockは、良い選択です。そこで、ここでfinallyブロックを使って、データベースを自動で閉じます。例えば:

try
{
 //code of operation
}
catch(Exception error)
{ //code to handle exception
  error.printStackTrace();
}
finally
{ //any code which need to execute mandatory   
  commit();
  db.close();
}

上記の例でtry blockは、DB 接続の開始と、DB の挿入、取得、または更新を処理します。catch block例外を処理し、finally blockすべての DB 接続を閉じます。

于 2013-04-08T13:58:48.007 に答える