在C++中,异常处理是通过关键字try、catch和throw实现的。当程序遇到错误时,可以抛出一个异常,然后在适当的地方捕获并处理它。下面是一个简单的示例:
#include <iostream>
#include <stdexcept>
int main() {
try {
// 抛出异常
throw std::runtime_error("An error occurred");
} catch (const std::runtime_error& e) {
// 捕获并处理异常
std::cerr << "Caught exception: " << e.what() << std::endl;
}
return 0;
}
在这个例子中,我们使用throw关键字抛出一个std::runtime_error异常。然后,我们使用catch块捕获这个异常,并通过调用what()方法获取异常的描述信息。
在Linux环境下,你可以使用g++编译器编译这个程序:
g++ -o exception_example exception_example.cpp
然后运行生成的可执行文件:
./exception_example
如果程序遇到异常,它将捕获并处理异常,输出类似以下内容:
Caught exception: An error occurred
在实际应用中,你可能需要处理多种类型的异常。你可以使用多个catch块来捕获不同类型的异常,并根据需要处理它们。例如:
try {
// 抛出异常
throw std::runtime_error("An error occurred");
} catch (const std::runtime_error& e) {
// 捕获并处理std::runtime_error异常
std::cerr << "Caught runtime_error: " << e.what() << std::endl;
} catch (const std::exception& e) {
// 捕获并处理其他std::exception派生异常
std::cerr << "Caught exception: " << e.what() << std::endl;
} catch (...) {
// 捕获并处理所有其他异常
std::cerr << "Caught unknown exception" << std::endl;
}
在这个例子中,我们首先尝试捕获std::runtime_error异常,然后尝试捕获其他std::exception派生异常,最后捕获所有其他未知异常。这样可以确保程序在遇到异常时能够正确地处理它们。