c++++ 中处理函数异常情况的方法包括:1. try-catch 语句块,可捕捉异常并执行后续代码;2. 异常规范,允许指定函数可能引发的异常类型;3. noexcept 关键字,声明函数不引发异常。
C++ 中处理函数中异常情况
在编写 C++ 程序时,处理函数中的异常情况至关重要,以确保程序在意外事件发生时能够优雅地恢复。C++ 提供了几种内置机制来处理异常:
1. try-catch 语句块
立即学习“C++免费学习笔记(深入)”;
点击下载“修复打印机驱动工具”;
try-catch 语句块是最常用的异常处理机制。其语法如下:
try {
// 可能引发异常的代码
} catch (const std::exception& e) {
// 处理异常
}
当 try 块中的代码引发异常时,会立即跳转到 catch 块,其中包含处理异常的代码。
2. 异常规范
异常规范是一种编译时异常处理机制。它允许指定函数可能引发的异常类型。其语法如下:
int divide(int a, int b) throw(std::invalid_argument);
在上面的例子中,divide 函数声明可能会引发 std::invalid_argument 异常。如果从函数中引发了未指定的异常类型,则会终止程序。
3. noexcept 关键字
noexcept 关键字可用于指定函数不引发异常。其语法如下:
int safe_function() noexcept;
如果 safe_function 函数确实引发了异常,则会终止程序。
实战案例
考虑以下代码片段:
int divide(int a, int b) {
if (b == 0) {
throw std::invalid_argument("除数不能为零");
}
return a / b;
}
此函数可以用来计算两个数的商。如果除数为零,它会引发 std::invalid_argument 异常。让我们看看如何使用 try-catch 块处理这个异常:
int main() {
try {
int a = 10;
int b = 0;
int result = divide(a, b);
} catch (const std::invalid_argument& e) {
std::cout << "错误: " << e.what() << std::endl;
}
return 0;
}
在这个例子中,如果 divide 函数引发异常,它会被 catch 块捕获,并在控制台中打印错误消息。