c++编写异常处理的类
时间: 2024-09-06 20:03:21 浏览: 39
在 C++ 中,异常处理是一种强大的错误管理机制,它允许程序在遇到错误条件时优雅地退出并传递错误信息。异常通常通过 `try-catch` 块来实现,其基本结构如下:
1. **抛出异常** (throw):当程序遇到预期之外的条件,如除以零、文件打开失败等,可以使用 `throw` 关键字抛出一个自定义的异常对象。异常对象可以是从特定异常类派生出来的类实例。
```cpp
class DivisionByZero : public std::exception {
public:
const char* what() const throw() override {
return "Division by zero error";
}
};
int main() try {
int numerator = 10;
int denominator = 0;
if (denominator == 0)
throw DivisionByZero();
}
catch(DivisionByZero& e) {
// 捕获并处理 DivisionByZero 异常
std::cerr << "Caught: " << e.what() << '\n';
}
```
2. **捕获异常** (catch):`catch` 子句用于捕获并处理异常。它可以匹配多种异常类型,从最具体的到最一般的顺序排列,更具体的异常类型会先被捕获。如果未匹配到任何异常类型,剩余的 `catch` 将不会执行。
3. **异常声明**:对于可能出现的异常类型,可以提前声明,即使它们在当前作用域内并未实际抛出。
4. **默认处理器** (`std::terminate` 或 `std::rethrow`):如果没有 `catch` 块能处理异常,程序会终止执行,并在某些情况下调用 `std::terminate` 函数。
阅读全文