防止应用崩溃

时间:2018-02-28 13:20:36

标签: c# wpf exception exception-handling

我有一个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);

感谢。

1 个答案:

答案 0 :(得分:1)

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

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

AccessViolationException

AccessViolationException和try / catch blocks

  

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