防止应用崩溃
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了防止应用崩溃相关的知识,希望对你有一定的参考价值。
我有一个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);
谢谢。
您需要确定抛出该异常的代码部分。我敢打赌这是一些外部的无人图书馆。
如果您无法修复该库,则可以按照MSDN上的说明进行操作:
AccessViolationException和try / catch块
从.NET Framework 4开始,如果异常发生在公共语言运行库保留的内存之外,则结构化异常处理程序中的catch语句不会处理公共语言运行库抛出的AccessViolationException异常。若要处理此类AccessViolationException异常,应将HandleProcessCorruptedStateExceptionsAttribute属性应用于引发异常的方法。此更改不会影响用户代码抛出的AccessViolationException异常,这些异常可以继续被catch语句捕获。对于为.NET Framework的先前版本编写的代码,您希望在.NET Framework 4上重新编译和运行而不进行修改,您可以将该元素添加到应用程序的配置文件中。请注意,如果已为AppDomain.FirstChanceException或AppDomain.UnhandledException事件定义了处理程序,则还可以接收异常通知。
以上是关于防止应用崩溃的主要内容,如果未能解决你的问题,请参考以下文章
每当我运行我的片段时,这行代码 mapFragment.setRetainInstance(true);正在崩溃我的应用程序? [关闭]