异常传播机制:当一个函数发生异常时,它会向上层函数传播,直到被捕获或继续传播。要点:1)异常抛出通过 throw 实现;2)捕获异常使用 try-catch 块;3)重新传播异常使用 rethrow。
C++ 异常处理中的异常传播机制:原理和要点
异常传播机制
当一个函数中发生异常时,它会被继续传递给调用该函数的函数。这一过程称为异常传播。
异常传播的原理
- 当一个函数中发生异常时,它会抛出一个异常对象。
- 调用该函数的函数负责捕获该异常,或者继续将其向上层传播。
- 在异常传播过程中,每个函数都必须决定是捕获还是继续传播异常。
异常传播的要点
- try-catch 块:用于捕获异常。该块应放置在可能抛出异常的代码段周围。
- throw:用于抛出一个异常对象。该语句会终止当前函数并继续将异常向上层传播。
- rethrow:用于在捕获一个异常后重新将其传播。这使得可以继续将异常向上层传播。
实战案例
以下是一个展示异常传播机制的简单示例:
#include <iostream>
using namespace std;
void f1() throw(int) {
throw 42;
}
void f2() {
try {
f1();
}
catch (int e) {
cout << "Caught an integer exception: " << e << endl;
}
}
int main() {
f2();
return 0;
}
在这个示例中:
- 函数 f1() 抛出一个 int 类型异常。
- 函数 f2() 使用 try-catch 块捕获该异常并将其打印到标准输出。
- main() 函数调用 f2(), 若 f1() 中抛出异常,将由 f2() 捕获并处理。