讲述一下C++中try catch的用法
时间: 2023-07-24 09:14:00 浏览: 115
在 C++ 中,`try-catch` 语句用于处理异常。异常是在程序运行过程中发生的错误或异常情况,例如除零错误、空指针引用等。通过使用 `try-catch` 语句,可以捕获并处理这些异常,避免程序因异常而崩溃。
`try-catch` 语句的基本语法如下:
```cpp
try {
// 可能会抛出异常的代码块
} catch (ExceptionType1& e1) {
// 处理 ExceptionType1 类型的异常
} catch (ExceptionType2& e2) {
// 处理 ExceptionType2 类型的异常
} catch (...) {
// 处理其他类型的异常
}
```
- `try` 块:包含可能会抛出异常的代码块。当在 `try` 块中的代码抛出异常时,程序会立即跳转到 `catch` 块进行异常处理。
- `catch` 块:用于捕获和处理特定类型的异常。可以有一个或多个 `catch` 块,并按照它们的顺序依次检查异常类型,匹配则执行相应的块。
- `ExceptionType`:指定要捕获和处理的异常类型。可以是标准库中提供的异常类型,也可以是自定义的异常类型。
- `& e`:通过引用捕获异常对象,以便在 `catch` 块中访问和处理异常信息。
- `...`:表示捕获所有其他未被前面的 `catch` 块捕获的异常,通常用于进行最后的异常处理或记录。
以下是一个简单的示例,演示了 `try-catch` 的用法:
```cpp
#include <iostream>
int main() {
try {
int num1, num2;
std::cout << "Enter two numbers: ";
std::cin >> num1 >> num2;
if (num2 == 0) {
throw std::runtime_error("Divide by zero error!");
}
double result = static_cast<double>(num1) / num2;
std::cout << "Result: " << result << std::endl;
} catch (const std::exception& e) {
std::cout << "Exception caught: " << e.what() << std::endl;
}
return 0;
}
```
在上述示例中,我们尝试从用户输入中获取两个数,并进行除法运算。如果第二个数为零,则会抛出 `std::runtime_error` 类型的异常。在 `catch` 块中,我们捕获并处理该异常,并输出异常信息。
通过使用 `try-catch` 语句,我们可以优雅地处理异常,避免程序崩溃,并提供有用的错误信息。在实际应用中,可以根据具体需求和异常类型,使用不同的 `catch` 块来采取相应的处理措施。
阅读全文