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 块,我们可以捕获并处理程序运行时的错误,提高程序的稳定性和可靠性。

C++ 异常处理:语法、示例与最佳实践

原文地址: https://www.cveoy.top/t/topic/Dw6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录