我试图捕获我的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