4

如何在 C# 中的类库项目中编写一个捕获所有异常处理程序,这将为库中发生的任何异常提供外部调用者一个自定义异常。

我发现最接近的解决方案是实现一个Facade类,从中调用低级类,并写入try..catch来自 Facade 的每个调用,如果下面发生任何异常,它将抛出单个自定义异常。

我搜索了解决方案,但只为 Web 应用程序(使用应用程序上下文捕获异常)找到它,例如如何用简历实现一个“catch'em all”异常处理程序?

我需要在类库级别或库级别的使用者上实现它,但如果可以通过编写最少的异常处理语句来完成,那就太好了。

4

2 回答 2

4

可以使用:

AppDomain.CurrentDomain.UnhandledException += (sender, e) =>
    {
        var exception = e.ExceptionObject as Exception;
        if (exception != null && exception.Source == "MyLib")
        {
            // Do stuff here
        }
    };

但说真的,不要这样做。不应以这种方式处理异常,您应该在本地捕获它们。

于 2013-04-15T09:27:25.380 回答
1

您可以使用AppDomain.UnhandledException,但请确保您彻底阅读了文档 - 有一些您无法处理的例外情况,它还取决于您使用的框架版本。

于 2013-04-15T09:25:31.030 回答