C++如何捕获异常_C++ try catch throw异常处理流程

1次阅读

c++中异常处理通过trycatchthrow实现,throw抛出异常,如除零时throw “Division by zero!”或std::runtime_Error;try块包含可能出错的代码,如调用divide函数;catch块按顺序捕获并处理对应类型异常,可捕获const char*、std::exception等,最后可用catch(…)捕获未知异常;示例程序输出“Error: Cannot divide by zero”,合理使用可提升程序健壮性,但不应滥用为常规控制流。

C++如何捕获异常_C++ try catch throw异常处理流程

在C++中,异常处理是一种用于应对程序运行时错误的机制。通过 trycatchthrow 三个关键字,可以实现对异常的安全捕获和处理,避免程序因未处理的错误而崩溃。

throw:抛出异常

当程序检测到一个错误或异常情况时,使用 throw 抛出一个异常。这个异常可以是任意类型的值,比如整数、字符串或自定义异常类对象

例如:

如果除数为零,可以抛出一个字符串或标准异常:

if (b == 0) throw "Division by zero!";

立即学习C++免费学习笔记(深入)”;

或者使用标准库中的异常类型:

#include <stdexcept></stdexcept>
throw std::runtime_error("Division by zero!");

try:尝试执行可能出错的代码

将可能抛出异常的代码放在 try 块中。程序会正常执行 try 块内的语句,一旦有异常被抛出,控制权立即转移到与之匹配的 catch 块。

示例:

try {
int result = divide(a, b);
cout <br><code>}

C++如何捕获异常_C++ try catch throw异常处理流程

Text-To-Pokemon口袋妖怪

输入文本生成自己的Pokemon,还有各种选项来定制自己的口袋妖怪

C++如何捕获异常_C++ try catch throw异常处理流程 1487

查看详情 C++如何捕获异常_C++ try catch throw异常处理流程

catch:捕获并处理异常

catch 块紧跟在 try 块之后,用于接收和处理异常。可以有多个 catch 块,分别处理不同类型的异常。

常见写法:

  • catch (const char* msg) { cout
  • catch (const std::exception& e) { cout
  • catch (...) { cout (捕获所有未匹配的异常)

程序会按 catch 出现的顺序进行匹配,一旦找到合适类型就执行对应块,其余不再检查。

异常处理完整流程示例

下面是一个完整的异常处理例子:

#include <iostream></iostream>
#include <stdexcept></stdexcept>
using Namespace std;

int divide(int a, int b) {
if (b == 0) throw runtime_error("Cannot divide by zero");
return a / b;
}

int main() {
try {
cout <br><code> }
catch (const runtime_error& e) {
cout <br><code> }
catch (...) {
cout <br><code> }
return 0;
}

输出结果为:Error: Cannot divide by zero

基本上就这些。合理使用 try-catch 能让程序更健壮,尤其是在处理文件、网络、内存分配等容易出错的操作时特别有用。注意不要滥用异常,它适合处理“异常”情况,而不是作为常规流程控制手段。

text=ZqhQzanResources