有没有一种方法可以捕获和处理在类库的任何方法中引发的所有异常的异常?

我可以在每个方法中使用try catch构造,如下面的示例代码所示,但是我正在寻找类库的全局错误处理程序。该库可由ASP.Net或Winforms应用程序或其他类库使用。

这样做的好处是开发更容易,并且不需要在每种方法中重复执行相同的操作。

public void RegisterEmployee(int employeeId)
{
   try
   {
     ....
   }
   catch(Exception ex)
   {
     ABC.Logger.Log(ex);
   throw;
   }
}

最佳答案

您可以订阅像AppDomain.UnhandledException这样的全局事件处理程序,并检查引发异常的方法:

AppDomain.CurrentDomain.UnhandledException += CurrentDomainOnUnhandledException;

private static void CurrentDomainOnUnhandledException(object sender, UnhandledExceptionEventArgs unhandledExceptionEventArgs)
{
    var exceptionObject = unhandledExceptionEventArgs.ExceptionObject as Exception;
    if (exceptionObject == null) return;
    var assembly = exceptionObject.TargetSite.DeclaringType.Assembly;
    if (assembly == //your code)
    {
        //Do something
    }
}

10-08 19:41