我試圖捕獲我的worker角色中的所有未處理的異常。我嘗試將try
- catch
塊放入Run()
方法(建議爲here),但沒有成功。如何在Windows Azure中捕獲未處理的異常(Worker)角色
public override void Run()
{
try
{
base.Run();
}
catch (Exception ex)
{
Trace.TraceError("Unhandled Exception: {0}", ex);
throw ex;
}
}
該角色託管WCF服務,因此在Run()
方法中沒有其他邏輯。在這個層面上是否有另一種可能性來捕捉異常?
更新1 要澄清的問題:角色的自承載WCF服務(在OnStart()
初始化),其中一些操作是後臺操作。當服務被調用並且該方法引發意外的異常時,我喜歡將其寫入日誌。
解決方案: 顯然,這就像一個普通的C#應用程序: 只需添加一個句柄到UnhandledException
事件這樣
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
角色的OnStart()
內。我很專注於Azure,我認爲這畢竟不行,我甚至沒有嘗試過:-)
嘗試使用虛擬工作者角色,它只是拋出`新的異常(「測試」);` – 2011-01-07 14:46:35