質問
はんだログインです。
public foo(..) { try { ... } catch (Exception ex) { Logger.Error(ex); throw; } }
している場合はこの場にそれぞれのレイヤー(DataAccess、事業とWebService)この例外はログインします。
ることに意味がなった場合のレイヤーに個別プロジェクトの公開インタフェースをtry/catchです。なぜですか?はいかがでしょうか?あとは異なるアプローチを使ってみました?
解決
レコード店ディスクユニオン.すると、正しい場所 取扱い の例外(かのように、チなrethrow、後でログインします。できれば、全体のスタックトレースのコースですが、以下のご提案もゴミのコードtry-catchブロックとなります。
他のヒント
なお、今後どこへ向かおうとしているの例外は、ログレベルの場合にエラーとなrethrowます。他にログインではバンチの"ノイズ"の3以上の同じメッセージのログイン後の各層である。
私のベストプラクティス:
- のみをtry/catchで公開方法(一般;明らかだトラップのための特定のエラーだチェック有り)
- のみログイン、UI層の前を抑制するエラーおよび替にエラーページ/す。
の一般原則であるだけ例外をキャッチできれば実際はなんとかしなければならないのです。でのビジネスやデータの層というだけは例外をキャッチし、この例外にな状況のようになります:
try
{
this.Persist(trans);
}
catch(Exception ex)
{
trans.Rollback();
throw ex;
}
私の業務データの層的データを保存する場合、例外が生成され、取引がロールバックの例外が送信されるUI。
のUI層、実践できる共通の例外ハンドラー:
願います。ThreadException+=new ThreadExceptionEventHandler(Application_ThreadException);
を取り扱うすべての例外をスローしました。このログの例外として表示ユーザーに優しい応答:
static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
LogException(e.Exception);
}
static void LogException(Exception ex)
{
YYYExceptionHandling.HandleException(ex,
YYYExceptionHandling.ExceptionPolicyType.YYY_Policy,
YYYExceptionHandling.ExceptionPriority.Medium,
"An error has occurred, please contact Administrator");
}
実際のUIコードを聞き取ることができると思い個別の例外の場合はいかないものがあのような表示に優しいメッセージまたは変更の画面等
また、通常う取扱いを誤りなどに分割により0により例外をスローします。
での練習は 翻訳の例外.だけではなくログします。を知りたければ、特定の理由の例外がスローされるまで、特定の例外:
public void connect() throws ConnectionException {
try {
File conf = new File("blabla");
...
} catch (FileNotFoundException ex) {
LOGGER.error("log message", ex);
throw new ConnectionException("The configuration file was not found", ex);
}
}
独自の例外をラップinbuildます。このようにできる独特の間で既に誤りがあると楽しさアップ。これは置い方法その他の方法が投げexcpetions反予想や想定外の故障
がありますのルックアップ標準例外の取り扱いスタイルが、私の理解では、この:取扱いの例外でのレベルを追加できるキーワードが例外またはレベルでの現在の例外のユーザーです。
に例を確認することができまなく除き、ロギングでは、投います。なぜならずチで最高レベルの一つをtry/catchではなく内部のあらゆる方法すべてを確認することができますログインです。
いのみお取扱いについて、それぞれのtierまた追加情報処理の例外の前に廃棄してしまうので再度メッセージ、例外の新しい例外を作成する有用な情報を超えて、低レベルの例外の文字を通常とは少しもなく一部のコ..
時にはログインしている必要がありデータはないが、例外はかっています。その場合には、適切なログインで取得する情報です。
例えば、(Java擬似コード):
public void methodWithDynamicallyGeneratedSQL() throws SQLException {
String sql = ...; // Generate some SQL
try {
... // Try running the query
}
catch (SQLException ex) {
// Don't bother to log the stack trace, that will
// be printed when the exception is handled for real
logger.error(ex.toString()+"For SQL: '"+sql+"'");
throw ex; // Handle the exception long after the SQL is gone
}
}
これは、遡及しログイン(自分用語)、バッファーログのイベントな書きたいイベントトリガーなどの例外がスローされます。
だが必要なログインすべての例外は、その素晴らしいアイデアです。とはいえ、ロギングすべての例外なくそんな良い方法がありました。
またログインで最高レベルの通常ごUIやwebサービスのコードです。ログインを複数回は廃棄物である。また、知りたいのが狭く、若干偏平足らしているoff.............
一つのコンテンツやアプリは、全てのページを誘導することができなかBasePageオブジェクトとこのオブジェクトの取り扱いの例外やエラーです。
合することになりそうもないと思い方が良いの除去をtry/catch方からの授業を例外とするクラスを担当する取扱います。そのようにだけログ一例えば、より明確ログでもログインすることができますのstacktraceいポーから例外が発信されました。
私の方はログインは例外でのみハンドラです。のリアルハンドラとは大きく異なっている点です。その他のログは非常に難しいとのコードを満た構成にしています。
によっては例外:この実際にはそうはならないと思うのログです。のその他の方法:が予想される場合はこの例外についてどのように考えればよいのデザインのものに限ります。
どちら:少なくともう指定の例外にしたいrethrow、またはログにあります。
public foo(..)
{
try
{
...
}
catch (NullReferenceException ex) {
DoSmth(e);
}
catch (ArgumentExcetion ex) {
DoSmth(e);
}
catch (Exception ex) {
DoSmth(e);
}
}
またログインでtier境界線。例えば、事業tierされ、開発の物理的分離機n tierアプリケーションにこのログのエラーになります。
このように使ってログの例外のサーバーになる必要はな魅クライアントマシンとは何かが起こりました。
その結果が、先ほど任天堂さんのパターン事業の階層を使用するアプリケーションまたはリモASMX webサービスとWCFできる遮断ログイン例外を使用IErrorHandlerに取り付けChannelDispatcher(他のすべて-は必要ありませんが、try/catch/throwパターンです。
どんな要求のある戦略を取り扱いに例外をスローしました。今からとっても待ち遠しいです、とrethrow.のほか、余計なログのエントリでコードが読み出します。検討の書き込みログイン用のコンストラクタです。この準備金はtry/catchより例外として扱うことが認めしたいから回復;のコードを読みやすくなりました。への対応想定外または回復不可能な例外を除いていtry/catch近く最外層のプログラムにログイン診断情報です。
余談ですが、場合にはC++のおcatchブロックをコピーは例外オブジェクトできる可能性のあるソースの追加。てみてくへの参照例外タイプ:
catch (const Exception& ex) { ... }
この ソフトウェア工学のpodcastラジオの非常に良い参考のためのベスエラーになります。が実際に2講義します。