首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抓还是不抓

抓还是不抓
EN

Stack Overflow用户
提问于 2010-03-16 18:15:23
回答 4查看 431关注 0票数 3

应用程序是否应该捕获“坏”信号,如SIGSEV、SIGBUS?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-03-16 18:23:02

这些信号是在“永远不应该发生”的情况下产生的,此时您的程序处于未定义的状态。如果你确实捕获了它们,继续执行将是非常有问题的,因为它几乎肯定会导致更多,甚至更严重的错误。此外,如果你没有捕捉到它们,操作系统可能会做一些事情,比如生成有用的诊断信息,比如核心转储。所以我会说“不”,除非你不想要核心转储,而且你的错误处理会做一些非常简单的事情,比如写日志和终止。

票数 7
EN

Stack Overflow用户

发布于 2010-03-16 18:21:48

只有当您有比默认操作更有意义的事情要做的时候。除了非常迅速地中止之外,您不能做更多的事情,但有时尝试保存当前工作就足够了。但是要注意不要覆盖现有的文件--用户不喜欢替换好的文件,即使是过时的垃圾文件。

票数 4
EN

Stack Overflow用户

发布于 2010-03-16 18:24:01

不,你不应该。我知道这很诱人。但是只有很少的原因会让你想要捕捉像SIGSEV和SIGBUS这样的致命信号。

少数例外之一可能是有一些额外的信令/事后代码,它会告诉你的程序失败了。即使是这样,也只能在受控环境中完成,而不是在提供给数十万用户的代码中完成。

你必须准备好你的事后代码本身会崩溃,因为SIGSEV和SIGBUS是有缺陷的代码或数据的迹象。

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

https://stackoverflow.com/questions/2453476

复制
相关文章

相似问题

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