可能重复:
C:你如何模拟“异常”?
嗨,我知道异常处理在 C++ 中可用,但在 C 中不可用。但我也读到异常处理是从操作系统端提供的,那么 C 是否有任何函数从操作系统调用与 try catch 和 throw 相同的行为?谢谢。
C语言本身不支持异常处理。 然而,C 的异常处理方法确实存在于特定于平台+编译器的基础上。
在 Windows 中,例如 C 程序可以使用 SEH(结构化异常处理):
我过去见过这样的论点:C 函数对
setjmp
和 longjmp
是 C 中的异常处理。我认为它更接近弹出模式,但值得研究
不是以独立于平台的方式。 这仅适用于硬件/操作系统级别的异常,不适用于软件异常。
C 在标准库中提供了异常:setjmp()/longjmp()。
我认为不存在真正的、纯粹的、可移植的 C 解决方案。 对于 Microsoft 编译器,您可以使用 __try __ except,请参阅 http://msdn.microsoft.com/en-us/library/zazxh1a9(VS.80).aspx