C++ 异常处理:语法、示例与最佳实践
C++ 异常处理:语法、示例与最佳实践
异常处理是构建健壮程序的关键机制,允许我们在运行时优雅地检测和处理错误。本文将深入探讨 C++ 异常处理的语法和基本要点,并通过示例代码演示其工作原理。
1. 抛出异常 (Throwing an Exception)
在 C++ 中,使用 throw 关键字抛出异常,指示程序出现了错误或异常情况。throw 后面通常跟一个表达式,可以是任何类型,包括:
- 内置数据类型 (如 int, double, char*)* 自定义类对象cppif (b == 0) { throw '除数不能为零'; // 抛出一个字符串异常}
2. 捕获异常 (Catching an Exception)
try...catch 块用于捕获和处理抛出的异常。
try块: 包含可能抛出异常的代码。*catch块: 捕获并处理try块中抛出的特定类型异常。一个try块可以跟随多个catch块,用于处理不同类型的异常。cpptry { int result = divide(10, 0); // 可能抛出异常的代码 std::cout << '结果:' << result << std::endl;} catch (const char* message) { // 捕获字符串异常 std::cout << '捕获到异常: ' << message << std::endl;}
3. 异常处理的基本要点
- 当
try块中抛出异常时,程序会立即退出try块,并查找匹配的catch块。* 如果找到匹配的catch块,程序会执行该块内的代码,然后继续执行程序的其余部分。* 如果没有找到匹配的catch块,程序将终止,并打印异常信息。*catch块按照从上到下的顺序进行匹配,只有第一个匹配的catch块会被执行。
示例代码:cpp#include
int divide(int a, int b) { if (b == 0) { throw '除数不能为零'; } return a / b;}
int main() { try { int result = divide(10, 0); std::cout << '结果:' << result << std::endl; } catch (const char* message) { std::cout << '捕获到异常: ' << message << std::endl; }
return 0;}
在上述代码中,如果 divide 函数的除数为零,则抛出一个字符串异常。main 函数中的 try...catch 块捕获并处理该异常,输出错误信息,防止程序崩溃。
总结
异常处理是编写健壮 C++ 程序的重要工具。通过合理使用 try...catch 块,我们可以捕获并处理程序运行时的错误,提高程序的稳定性和可靠性。
原文地址: https://www.cveoy.top/t/topic/Dw6 著作权归作者所有。请勿转载和采集!