C++异常处理语句中一个try对应一个catch语句
时间: 2023-07-25 08:30:11 浏览: 124
在C++中,一个try块可以对应多个catch块。catch块可以用来处理不同类型的异常,因此在一个程序中可能会有多个不同类型的异常被抛出,需要对每种类型的异常都进行相应的处理。
例如,下面的代码中,try块包含了两个可能抛出异常的语句,分别是除以0和数组越界访问。catch块分别处理了这两种异常:
```c++
try {
int x = 10, y = 0;
int z = x / y; // 可能抛出除零异常
int arr[3] = {1, 2, 3};
int index = 5;
int val = arr[index]; // 可能抛出数组越界异常
}
catch (const std::exception& e) {
std::cout << "Caught exception: " << e.what() << std::endl;
}
catch (...) {
std::cout << "Unknown exception caught" << std::endl;
}
```
第一个catch块处理std::exception及其派生类的异常,输出异常信息;第二个catch块处理所有不属于std::exception及其派生类的异常,输出一个通用的异常信息。如果try块中的语句抛出了除以0的异常,则第一个catch块会被执行;如果抛出了数组越界访问的异常,则第一个catch块同样会被执行;如果抛出了其他类型的异常,则第二个catch块会被执行。
阅读全文