今天我在想其他语言中存在的 try/catch 块。谷歌搜索了一段时间,但没有结果。据我所知,C 中没有 try/catch 这样的东西。但是,有没有办法“模拟”它们呢?
当然,有断言和其他技巧,但没有像 try/catch 那样也能捕获引发的异常。谢谢
C 本身不支持异常,但您可以在一定程度上模拟它们setjmp
and longjmp
calls.
static jmp_buf s_jumpBuffer;
void Example() {
if (setjmp(s_jumpBuffer)) {
// The longjmp was executed and returned control here
printf("Exception happened here\n");
} else {
// Normal code execution starts here
Test();
}
}
void Test() {
// Rough equivalent of `throw`
longjmp(s_jumpBuffer, 42);
}
这个网站有一个关于如何模拟异常的很好的教程setjmp
and longjmp
- http://www.di.unipi.it/~nids/docs/longjump_try_trow_catch.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)