C++ 异常处理机制与最佳实践
异常是 C++ 处理错误的主要方式,比错误码更安全、更清晰。
1. 基本语法
try {
if (error) throw std::runtime_error("Something went wrong");
} catch (const std::exception& e) {
std::cerr << e.what() << std::endl;
}2. 自定义异常
class MyException : public std::runtime_error {
public:
explicit MyException(const std::string& msg) : std::runtime_error(msg) {}
};3. noexcept 规范
noexcept声明函数不抛出异常,有助于优化。- 若违反,会调用
std::terminate。
void safe() noexcept { /* 确保不抛出 */ }4. 异常安全级别
- 基本保证:资源不泄漏,对象状态一致。
- 强保证:操作回滚,状态不变。
- 不抛保证:绝不抛出(如析构函数默认)。
5. 最佳实践
- 仅对异常情况使用异常。
- 捕获引用
catch (const std::exception& e)。 - 使用 RAII 管理资源,避免手动处理异常。
异常处理是 C++ 健壮代码的基石。
