首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么要捕获访问冲突?

为什么要捕获访问冲突?
EN

Stack Overflow用户
提问于 2012-06-20 04:56:22
回答 5查看 891关注 0票数 3

与C++异常不同,访问冲突表示应用程序运行时受到威胁,因此应用程序的状态未定义。在这种情况下,最好的做法是退出你的应用程序(通常是为你做的,因为它崩溃了)。

我注意到捕获这些异常之一是可能的。例如,在Microsoft Visual C++中,您可以使用/EHa__try/__catch来执行此操作。

那么,你想要抓住它们的原因是什么呢?据我所知,你的应用程序是无法恢复的。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-06-20 04:58:41

一个原因可能是编写一个崩溃转储文件;您可以对其进行更多的控制,并能够编写所需的确切类型。例如,在Windows中,您可以调用MiniDumpWriteDump来执行此操作。

票数 6
EN

Stack Overflow用户

发布于 2012-06-20 04:58:59

您可以从访问冲突中恢复。

例如,您可以使用VirtualAlloc分配一些地址空间,但将它所指向的内存标记为不存在,从而创建动态数组。然后,当您尝试使用某些内存时,您会捕获访问冲突,映射发生访问的内存页面,然后重试导致冲突的指令。

票数 8
EN

Stack Overflow用户

发布于 2012-06-20 05:25:37

在所有访问冲突之后,不能保证您的应用程序是稳定的。但它可以是稳定的,也可以在一段时间后恢复,因此捕获访问冲突将使您有机会:

  1. 通知用户发生错误日志允许用户尝试保存工作
  2. 尝试以您想要的方式恢复
  3. 日志诊断information
  4. Exit,而不是以您希望的方式恢复日志诊断

一个典型的例子是从插件捕获异常的主机应用程序。这样,主机应用程序(例如Photoshop )可以告诉用户"Plugin X崩溃,Photoshop不稳定……您应该保存您的工作,然后重新启动Photoshop。“

请注意,这不同于C++异常处理,后者根本不指示不可恢复的错误,而更像是堆栈展开功能。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11109304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档