【发布时间】:2021-07-13 09:33:00
【问题描述】:
我知道Access Violation Exception 是一个我不应该真正尝试处理的严重问题。
我也知道,在最新版本的.Net 中,可以通过
- 将此
<legacyCorruptedStateExceptionsPolicy enabled="true">放入配置中,所有catch块将能够捕获错误 - 使用
HandleProcessCorruptedStateExceptions属性装饰您想要捕获这些异常的方法
其实this说的很清楚了。
但我的情况有点不同,我似乎找不到解决方案:
我正在使用一个非托管 c++ 库,我将在我的应用程序的某个时间点对其进行初始化。然后这个 dll 本身会自己执行一些任务(从服务器拉数据到缓存,记录等)这个访问冲突异常看起来是在这个过程中抛出的,而不是当应用程序直接调用 dll 的 api 时。所以我没有办法try catch这个违规逻辑。
在这个阶段,我已经设法在AppDomain.CurrentDomain.UnhandledException 中捕捉到它,如下所示:
[HandleProcessCorruptedStateExceptions, SecurityCritical]
private static void CurrentDomainUnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Logger.Error("Unhandle Exception", (Exception)e.ExceptionObject);
}
但我仍然不能完全防止应用程序崩溃。 我知道我可能应该让应用程序崩溃。但我真的相信这个错误并不像看起来那么糟糕,我只需要知道如何抑制它,即使我可能不会使用它。
有什么想法吗?
【问题讨论】:
标签: c# .net error-handling access-violation unmanaged