防止应用崩溃

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

AccessViolationException和try / catch块

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

以上是关于防止应用崩溃的主要内容,如果未能解决你的问题,请参考以下文章

使用选项卡式活动和片段时应用程序崩溃

Android 应用程序片段不断崩溃

底部导航片段应用程序不断崩溃

每当我运行我的片段时,这行代码 mapFragment.setRetainInstance(true);正在崩溃我的应用程序? [关闭]

防止应用崩溃

当我点击我的应用程序中的注册用户片段时应用程序崩溃..其中包含recyclerview