34、C++ 异常处理:从 setjmp/longjmp 到 C++ 异常
2026/6/11 22:25:02 网站建设 项目流程

C++ 异常处理:从 setjmp/longjmp 到 C++ 异常

1. 认识 setjmp 异常

setjmp 异常可看作 C 风格的异常。与 C++ 风格的异常类似,它能让用户在代码中设置出错时返回的位置,并提供生成跳转异常的方法。

以下是一个示例代码:

#include <cstring> #include <csetjmp> #include <iostream> std::jmp_buf jb; void myfunc(int val) { if (val == 42) { errno = EINVAL; // Invalid argument std::longjmp(jb, -42); } } int main() { if (setjmp(jb) == -42) { std::cout << "failure: " << strerror(errno) << '\n'; std::exit(EXIT_FAILURE); } myfunc(1); std::cout << "success\n"; myfunc(42); std::cout << "success\n"; } // > g++ -std=c++17 scratchpad.cpp; ./a.out // success // failure: Invalid argument

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询