2011-01-08 13 views
0

UIレイヤのtry-catchとnティアアプリケーションの優れた練習との組み合わせはどれですか?try-catch-finallyを使用して練習してください

1.

try 
    { 
    //Statements 
    } 
    catch 
    { 
     throw 
    } 
    finally 
    { 
    //cleanup codes 
    } 

OR

2.

try 
    { 
     // statements 
    } 
    catch(Exception ex) 
    { 
    } 
    finally 
    { 
    // clean up 
    } 

とUI層で

try{ 
} 
catch(Exception ex) 
{ 
Log(ex); 
} 
finally 
{ 
    //clean up 
} 
+2

可能な複製[try try catch](http://stackoverflow.com/questions/523875/where-to-put-try-catch) – slugster

+1

ここでは、[どのようにしてtry catch例外を処理するブロック](http://stackoverflow.com/questions/2430823/how-and-where-do-we-write-try-catch-block-to-handle-exception)を参照してください。これらはちょうど検索をしなくても*関連の質問*パネルから選んだちょうど2つの質問でした。 – slugster

+0

"クリーンアップ"と書かれていることは、おそらく全体が 'using'ステートメントで置き換えられるべきであることを示しています。 –

答えて

2

catchthrowは全く無意味であるあなたがクリーンアップを確実にしたい場合は、あなただけtryfinallyを使用する必要があります。

2番目は危険で、決して使用しないでください。コードには、すべての例外を取り除き、説明なしで無視するキャッチは含まれていてはなりません。まれに、例外を捕捉して無視する必要がある場合は、その例外を特定のタイプの例外に限定しようとします。例外が無視される理由を説明するコードには常にコメントを含める必要があります。

3番目の例で問題なく動作します。私はあなたが予想している特定の例外の種類をキャッチし、必要に応じて問題をユーザーに知らせるブロックの中で、さらに多くの例外処理をブロックしているものとします(ブロックtry)。

1

一般的な方法は、最後に/してみてください(または使用することですusingステートメント)ビジネス/ servicリソースを適切にクリーンアップするためのレイヤーです。物理層の境界で

次のようなものかもしれないので、あなたは、長い例外にしたいかもしれません:

try 
{ 
} 
catch(Exception ex) 
{ 
    ... log exception 
    throw; 
} 

そしておそらくUI層におけるトップレベルの例外ハンドラを(キャッチ/してみてください)。最初のもので

関連する問題