2023年11月29日发(作者:)

c++异常处理机制和常用方法

C++ 异常处理机制是一种处理程序错误的标准方法,它允许程序

员在程序出现异常情况时进行处理。异常处理机制通过抛出异常、

获异常、传递异常三个步骤来实现。

1. 抛出异常

当程序出现异常情况时,可以使用 `throw` 关键字来抛出一个

异常。例如:

```

throw std::runtime_error("Something went wrong!");

```

这里抛出了一个 `std::runtime_error` 类型的异常,其中包含

了一个字符串描述信息。

2. 捕获异常

当程序抛出异常后,可以使用 `try-catch` 块来处理异常。例

如:

```

try {

// some code that may throw an exception

} catch (const std::exception& e) {

std::cerr << "Exception caught: " << () << std::endl;

}

```

这里使用 `try` 关键字开始一个代码块,该代码块可能会抛出

异常。如果抛出异常, `catch` 块中的代码将被执行。`catch`

中的参数指定了要捕获的异常类型,这里使用了 `const

std::exception&` 表示捕获所有继承自 `std::exception` 的异常。

`()` 方法返回异常描述信息。

3. 传递异常

当一个函数抛出异常时,它可以选择不处理该异常并将其传递给

调用该函数的代码。例如:

```

void foo() {

throw std::runtime_error("Something went wrong!");

}

int main() {

try {

foo();

} catch (const std::exception& e) {

std::cerr << "Exception caught: " << () << std::endl;

}

}

```

这里 `foo()` 函数抛出了一个异常,但它没有在函数中处理该

异常。当 `foo()` 被调用时,异常被传递给了 `main()` 函数中的

`catch` 块进行处理。

常用的异常类型包括 `std::exception`(所有标准异常类的基

类)`std::runtime_error`表示运行时错误)`std::logic_error`

(表示逻辑错误)等。除了使用标准异常类之外,程序员还可以自定

义异常类来表示特定的错误情况。