阅读完thisMSDN页面后,我在我的.NET类库中创建了一个全局异常处理程序,用于记录日志,其代码如下:
但是,如果我从一个方法中
MSDN页面上说:
UnhandledExceptionEventArgs提供了对异常对象和一个指示公共语言运行时是否正在终止的标志的访问。 UnhandledExceptionEventArgs是传递到AppDomain.UnhandledException事件的UnhandledExceptionEventHandler的参数之一。
我相信我所做的属于AppDomain(而不是ThreadException)?我在这里做错了什么?
PS。我试图避免使用
static void OnException(object sender, UnhandledExceptionEventArgs args)
{
Exception ex = (Exception)args.ExceptionObject;
Logging.LogException(ex);
}
但是,如果我从一个方法中
throw new UnauthorizedAccessException()
或throw new Exception()
,这根本不会捕获它。MSDN页面上说:
UnhandledExceptionEventArgs提供了对异常对象和一个指示公共语言运行时是否正在终止的标志的访问。 UnhandledExceptionEventArgs是传递到AppDomain.UnhandledException事件的UnhandledExceptionEventHandler的参数之一。
我相信我所做的属于AppDomain(而不是ThreadException)?我在这里做错了什么?
PS。我试图避免使用
try-catch
块,因为显然这是不好的实践。这个类库是从运行周期性的Windows服务中调用的,所以我宁愿不让它“崩溃”,以避免由于未预见的异常而导致的内存泄漏,并且更喜欢定期监视事件日志。
main
方法,但我应该在哪里订阅呢?至于附件,它在粗体字中说到了。我确实同意它详细地介绍了这个问题,但即使答案谈到日志记录,它也谈到了记录并允许应用程序崩溃。我正在尝试避免这种情况。 - reggaemahn