在Ubuntu中,C++异常处理主要通过try
、catch
和throw
关键字实现。下面是一个简单的示例:
#include <iostream>
#include <stdexcept>
int main() {
try {
int a = 10;
int b = 0;
if (b == 0) {
throw std::runtime_error("除数不能为0");
}
int c = a / b;
std::cout << "结果是:"<< c << std::endl;
} catch (const std::runtime_error& e) {
std::cerr << "捕获到异常:" << e.what() << std::endl;
} catch (...) {
std::cerr << "捕获到未知异常" << std::endl;
}
return 0;
}
在这个示例中,我们尝试执行一个除法操作。如果除数为0,我们抛出一个std::runtime_error
异常。然后,我们使用try
块来包裹可能抛出异常的代码。如果在try
块中发生异常,程序会立即跳转到相应的catch
块来处理异常。
在这个例子中,我们有两个catch
块。第一个catch
块捕获std::runtime_error
类型的异常,第二个catch
块捕获所有其他类型的异常。当异常被捕获时,我们可以处理它,例如打印错误消息或者执行其他恢复操作。
要编译这个示例,你可以使用g++编译器:
g++ -o exception_example exception_example.cpp
然后运行生成的可执行文件:
./exception_example
这将输出:
捕获到异常:除数不能为0