如何在Windows Azure(工作器)角色中捕获未处理的exception

我正试图在我的工作角色中捕获所有未处理的exception。 我尝试将一个trycatch块放入Run()方法(如此处所示 ),但没有成功。

 public override void Run() { try { base.Run(); } catch (Exception ex) { Trace.TraceError("Unhandled Exception: {0}", ex); throw ex; } } 

该角色承载WCF服务,因此Run()方法中没有其他逻辑。 是否有另一种可能性来捕获此级别的exception?

更新1澄清问题:角色self托管WCF服务(在OnStart()初始化),其中某些操作是后台操作。 当调用该服务并且该方法抛出意外exception时,我想抓住它将其写入日志。

解决方案:显然它就像在普通的C#应用​​程序中一样:只需向UnhandledException事件添加一个处理程序,就像这样

 AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); 

在角色的OnStart()内部。 我是如此专注于Azure,我认为这毕竟不起作用,我甚至没有尝试过:-)

正如我在问题中已经更新的那样,为了完整起见,这里作为答案:

显然它就像在普通的c#应用程序中一样:只需像这样向UnhandledException事件添加一个处理程序

 AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); 

在角色的OnStart()内部。

捕获将捕获所有exception。

你再扔它,这样就不会被抓住。

您也在进行日志记录,但在Azure中默认情况下不会打开日志,因为它们会花费。

另一种选择是没有例外。