2012-02-17 9 views
2

以下は私のエラーロギングコードの一部です。私のアプリ内で例外が発生すると、私はデータベースにログを記録します。そのデータベースがダウンしている場合やその他の問題が発生した場合、私はイベントビューアにログオンしようとします。catchブロック内にスローされた例外をどのように呑み込むことができますか?

何らかの理由でイベントビューアの書き込みに失敗した場合はどうなりますか? をどうすればを放棄するか、この新しい例外を飲み込むことができますか?

void SaveLog(string accountId, Exception ex, Category category, Priority priority) 
{ 
    try 
    { 
     using (var connection = new SqlConnection(…)) 
     { 
      connection.Open(); 
      command.ExecuteNonQuery(); 
     } 
    } 
    catch (Exception exception) 
    { 
     // exception while logging! 
     using (var eventLog = new EventLog { Source = "tis" }) 
     { 
      eventLog.WriteEntry(
       exception.Message + Environment.NewLine + 
       exception.StackTrace, 
       EventLogEntryType.Error); 
     } 
    } 
} 
+4

catchブロックについての特別なものは何もありません。 *あなたはキャッチブロックの外でそれをどうやって行いますか?キャッチブロック内で同じ方法で行います。 –

答えて

9
try { 
    // ... 
} 
catch (Exception exception) { 
    try { 
     // Attempt to write to event log. 
    } 
    catch { 
    } 
} 
+0

あなたの調整されていない括弧は私の脳を傾けます。 –

+0

@IgbyLargeman古いCの習慣は辛く死ぬ;) –

関連する問題