首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >linux中的异常处理

linux中的异常处理
EN

Stack Overflow用户
提问于 2011-08-30 13:18:55
回答 1查看 4.5K关注 0票数 5

我正在Linux上移植一个Windows程序。我的程序使用Windows结构化异常处理(SEH)。Linux不支持结构化异常处理,但是它提供了信号处理。我们可以超越信号来发展类似SEH的范式。

一旦您能够过滤异常,Windows提供了三种替代执行控制流:

1) EXCEPTION_EXECUTE_HANDLER :执行处理程序2) EXCEPTION_CONTINUE_SEARCH :将异常转发到下一个块(如果不存在,则转到OS) 3) EXCEPTION_CONTINUE_EXECUTION :从发生中断的指令继续异常。

如何在Linux中实现这个控制流。在Linux中,一旦处理了信号,程序就会从被中断的地方开始执行。如何开发continue_search和execute_handler范式?

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2011-08-30 13:27:53

在C++中做您想做的事情没有简单的方法。您的工具是标准的C++异常机制和sigactionsigaction处理程序可以将控制返回到它停止的位置。它是可以扔的,尽管在这个安全问题上一直存在争议。有人会说,它必须设置一个原子变量并返回。(问题是编译器看不到抛出的可能性,因此没有做好准备。)

如果你在C中工作,你有额外的复杂的选择涉及sigsetjmp,这或多或少是类固醇,风险和所有的后藤。

由于您还没有指定语言,或者您试图处理的特殊情况,所以提供一个更具体的菜谱是不实际的。

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

https://stackoverflow.com/questions/7243788

复制
相关文章

相似问题

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