C++ 异常处理
try/throw/catch + 标准异常类 · 难度:进阶 · +20XP
C++ 异常处理
用 try/throw/catch 处理运行时错误。异常对象在栈展开(stack unwinding)中自动销毁。
基本语法
try {
if (divisor == 0) throw runtime_error("除数不能为0");
result = a / divisor;
} catch (const runtime_error& e) {
cerr << "错误: " << e.what() << endl;
} catch (const exception& e) {
cerr << "其他错误: " << e.what() << endl;
} catch (...) {
cerr << "未知错误" << endl;
}
标准异常类
| 类 | 用途 |
|---|---|
| std::exception | 基类 |
| std::runtime_error | 运行时错误 |
| std::logic_error | 逻辑错误 |
| std::out_of_range | 越界 |
| std::invalid_argument | 无效参数 |
RAII 与异常安全
C++ 对象在异常时自动析构(RAII),确保资源不泄漏。不要在析构函数中抛异常。