防止应用崩溃

问题描述 投票:0回答:1

我有一个C#WPF应用程序抛出以下错误消息和崩溃:

System.AccessViolationException:尝试读取或写入受保护的内存。这通常表明其他内存已损坏。

然后我在代码中添加了以下异常处理程序。并且在抛出异常的方法的开头添加了以下代码行。

throw new System.AccessViolationException();

当发生上述异常时,异常处理程序现在正在执行单击本地计算机上的app exe时执行,但应用程序仍然崩溃。我需要能够阻止应用程序崩溃。不知道我该怎么做?

application.DispatcherUnhandledException += ApplicationDispatcherUnhandledException;

TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;


AppDomain currentAppDomain = AppDomain.CurrentDomain;
currentAppDomain.UnhandledException += new UnhandledExceptionEventHandler
                        (UnhandledExceptionHandler);

谢谢。

c# wpf exception exception-handling
1个回答
1
投票

您需要确定抛出该异常的代码部分。我敢打赌这是一些外部的无人图书馆。

如果您无法修复该库,则可以按照MSDN上的说明进行操作:

AccessViolationException

AccessViolationException和try / catch块

从.NET Framework 4开始,如果异常发生在公共语言运行库保留的内存之外,则结构化异常处理程序中的catch语句不会处理公共语言运行库抛出的AccessViolationException异常。若要处理此类AccessViolationException异常,应将HandleProcessCorruptedStateExceptionsAttribute属性应用于引发异常的方法。此更改不会影响用户代码抛出的AccessViolationException异常,这些异常可以继续被catch语句捕获。对于为.NET Framework的先前版本编写的代码,您希望在.NET Framework 4上重新编译和运行而不进行修改,您可以将该元素添加到应用程序的配置文件中。请注意,如果已为AppDomain.FirstChanceException或AppDomain.UnhandledException事件定义了处理程序,则还可以接收异常通知。

© www.soinside.com 2019 - 2024. All rights reserved.