linux中的异常处理

Utk*_*rsh 5 linux exception-handling

我在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范例?

提前致谢

bma*_*ies 5

没有简单的方法可以在C++中执行您想要的操作.您的工具是标准的C++异常机制,并且sigaction.一个sigaction处理程序可以控制返回给它离开的地方.它可以抛出,虽然对此的安全性存在争议.有人会说它必须设置一个原子变量并返回.(问题是编译器看不到抛出的可能性,所以不准备它.)

如果你在C工作,你有其他复杂的选择涉及sigsetjmp,或多或少转向类固醇,风险和所有.

由于您没有指定语言,或者您尝试处理的特殊情况,因此提供更具体的配方是不切实际的.