C++入门——60s从0到1
异常处理
在C++编程中,异常处理是一种用于处理程序运行时错误的机制。当代码出现错误时,程序将抛出一个异常,如果不对其进行处理,程序将终止运行并输出错误信息。在这篇文章中,我们将详细讲解C++中的异常处理机制,包括如何抛出异常、如何捕获异常以及如何处理异常。
抛出异常
在C++中,可以使用`throw`语句来抛出一个异常。当程序运行到`throw`语句时,程序将抛出一个异常并终止当前函数的执行。下面是一个抛出异常的示例代码:
#include <iostream> using namespace std; int divide(int x, int y) { if (y == 0) { // 如果y为0,则抛出异常 throw "除数不能为0"; } return x / y; } int main() { try { int result = divide(10, 0); // 调用divide函数,并将结果存储在result变量中 cout << "result = " << result << endl; } catch (const char* msg) { // 捕获抛出的异常 cerr << "Error: " << msg << endl; } return 0; }
在这个例子中,程序定义了一个名为`divide`的函数来计算两个整数的商。如果除数为0,该函数将抛出一个异常。在`main`函数中,程序调用了`divide`函数,并将结果存储在变量`result`中。由于除数为0,`divide`函数将抛出一个异常。最后,程序使用`try-catch`语句来捕获这个异常并输出错误信息。需要注意的是,在抛出异常时,我们可以使用一个字符串或字符串常量作为异常信息。
捕获异常
在C++中,可以使用`try-catch`语句来捕获异常。当程序运行到`try`语句块中的代码时,如果代码块中出现了异常,程序将跳转到与之对应的`catch`语句块中执行相应的操作。下面是一个捕获异常的示例代码:
#include <iostream> using namespace std; int divide(int x, int y) { if (y == 0) { // 如果y为0,则抛出异常 throw "除数不能为0"; } return x / y; } int main() { try { int result = divide(10, 0); // 调用divide函数,并将结果存储在result变量中 cout << "result = " << result << endl; } catch (const char* msg) { // 捕获抛出的异常 cerr << "Error: " << msg << endl; } return 0; }
在这个例子中,程序使用`try-catch`语句来捕获由`divide`函数抛出的异常。如果出现了异常,程序将跳转到与之对应的`catch`语句块中执行相应的操作。在这个例子中,我们输出了一条错误信息。需要注意的是,在`catch`语句块中,我们可以根据需要处理不同的异常类型或自定义异常类型。