C++异常处理机制之try-catch

1.介绍

        try-catch是C++中用于异常处理的机制。通过try-catch,程序可以捕获并处理运行时发生的异常,从而避免程序崩溃,并提供更友好的错误处理方式。

2.try-catch用法

        基本语法如下所示:

try {
    // 可能抛出异常的代码
}
catch (异常类型1 异常变量) {
    // 处理异常类型1
}
catch (异常类型2 异常变量) {
    // 处理异常类型2
}
catch (...) { // 捕获所有异常
    // 处理未知异常
}

        try块:包含可能抛出异常的代码。

        catch块:捕获并处理特定类型的异常。catch块可以有多个,用于处理不同类型的异常。

        catch(...):捕获所有类型的异常,通常用于处理未知异常。

3.异常处理流程

        1.如果try块中的代码抛出了异常,程序会立马跳转到匹配的catch块中。

        2.如果找到匹配的catch块,则执行该块的代码。

        3.如果没有找到匹配的catch块,异常会继续向上层调用栈传播,直到被捕获或程序终止。

        4.如果没有异常抛出,catch块会被跳过,程序继续正常执行。

        示例

#include <iostream>
#include <stdexcept> // 包含标准异常类

int main() {
    try {
        int numerator = 10;
        int denominator = 0;
        if (denominator == 0) {
            throw std::runtime_error("除数不能为零!"); // 抛出异常
        }
        int result = numerator / denominator;
        std::cout << "结果: " << result << std::endl;
    }
    catch (const std::runtime_error& e) { // 捕获 runtime_error 异常
        std::cerr << "捕获到异常: " << e.what() << std::endl;
    }
    catch (...) { // 捕获所有其他异常
        std::cerr << "捕获到未知异常!" << std::endl;
    }

    std::cout << "程序继续执行..." << std::endl;
    return 0;
}

        输出

捕获到异常: 除数不能为零!
程序继续执行...

4.注意事项

        1.异常类型匹配:catch块会按照顺序匹配异常类型,因此更具体的异常类型应该放前边。

        2.资源释放:如果异常抛出时分配了资源(如动态内存),需要在catch块中释放,或使用RAII(如智能指针)来管理资源。

        3.性能开销:异常处理会带来一定的性能开销,应避免在频繁执行的代码中使用异常。

        4.不要滥用异常:异常应仅用于处理异常情况,而不是控制程序流程。

5.总结

        try-catch是C++ 中处理异常的核心机制,能够有效提高程序的健壮性。通过合理使用 try-catch,可以捕获和处理运行时错误,避免程序崩溃,并提供清晰的错误信息。

如有错误,敬请指正!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值