C++ 异常处理:从 setjmp 到现代异常机制
在 C++ 编程中,异常处理是一项至关重要的技术,它能帮助开发者更优雅地应对程序运行时出现的错误。本文将详细介绍两种异常处理机制: setjmp 异常和 C++ 标准异常,并通过代码示例展示它们的使用方法和优缺点。
1. setjmp 异常
setjmp 异常可以看作是 C 风格的异常处理方式。与 C++ 风格的异常类似, setjmp 异常允许用户在代码中设置一个返回点,当发生错误时可以跳转到该位置。下面是一个简单的示例:
#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 << "su
超级会员免费看
订阅专栏 解锁全文
10

被折叠的 条评论
为什么被折叠?



