我評估Postsharp以在應用程序中部署。 我想通過postsharp處理我的應用程序中的所有未捕獲的異常。通過這種方式,我在OnExceptionAspect的子類中實現了OnException方法。 通過我的測試,所有異常都被捕獲,除了在一種情況下出現一個異常: 當異常拋入backgroundWorker時。在c#中處理異常backgroundWorker
我的課:
public class Test {
public void MethodTest() {
//...
// if I throw an exception here, no problem : postsharp aspect intercept
// below, postsharp don't intercept the exception :
BackgroundWorker bgw = new BackgroundWorker() ;
bgw.DoWork += (object sender2, DoWorkEventArgs e2) => {
//...
throw new NotImplementedException();
}
bgw.RunWorkerAsync();
}
}
你可以爲攔截這個異常的建議嗎?
謝謝你的幫助。
嗨,歡迎來到Stack。不是一個可怕的第一個問題,但我已經稍微編輯了你的標題並更改了標誌。你只是想處理由後臺工作者拋出的異常,這本質上是[this](http://stackoverflow.com/questions/20582253/background-worker-exception-handling)問題的重複。 –
Catch-em-all異常處理是一種非常糟糕的做法,尤其是如果你對異常不夠了解的話。改爲編寫AppDomain.CurrentDomain.UnhandledException事件的事件處理程序。 –
在我的上下文中(addin Microsoft Word),無法攔截AppDomain.CurrentDomain.UnhandledException事件。因此,爲了安全體驗用戶,需要攔截未處理的異常以發送到應用程序異常解析器。好的方法是使用Postsharp集中發送未處理的異常到Application Exception Resolver。但看起來像Postsharp不會攔截BackGroundWorker異常。 – Christ121212