2011-12-14 92 views
3

在一個應用程序中,我註冊了EventLog.EntryWritten事件,並使用.NET線程池線程等待發生更改事件。我認爲,一個例外是這個.NET線程池線程發生,所以我想使用try/catch來確保,這樣的:嘗試在.NET中捕獲錯誤threadpool

try { 
eventLog.EntryWritten += new EntryWrittenEventHandler(EventLogMonitor); 
} 
catch (System.Componentmodel.Win32exception e) 
{ 
// log error 
} 

我只是想知道,如果我有我的try/catch在正確的地方監視此線程是否有異常?

+1

你期望可能會拋出什麼?它是在事件訂閱嗎?或者你期望`EventLogMonitor`可能會拋出? – 2011-12-14 16:04:13

+0

我不認爲你會得到一個異常,試圖將方法附加到EntryWritten事件。所以catch塊可能永遠不會開火。如果您想捕獲代碼中可能發生的任何異常,可以將try塊包裝在整個方法/代碼區域中。所以在EventLogMonitor方法中,例如...這不是所有btw的最佳實踐。 – user1231231412 2011-12-14 16:07:05

回答

6

您編寫的代碼將捕獲註冊到事件的異常,而不是事件本身。

你應該把try..catch塊放在你的EventLogMonitor方法中。

private void EventLogMonitor (Object sender,EntryWrittenEventArgs e) 
{ 
    try 
    { 
     // your logic goes here 
    } 
    catch (Exception ex) 
    { 
      //do something with the excpetion 
    } 

}