首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【C++进阶】try块和异常处理

    << endl; } 2.2 异常传播机制 栈展开过程: 搜索当前函数中的匹配catch块 函数栈帧被销毁,局部对象析构 沿调用链向上查找匹配的catch块 找到则处理,找不到则terminate...如果没有找到匹配的 catch 块,程序会调用 std::terminate() 函数,终止程序的执行。 3.4 catch 块的参数传递 catch 块的参数可以是值传递、引用传递或指针传递。...标准库中的异常类 5.1 异常类的继承层次结构 exception ├── logic_error │ ├── invalid_argument │ ├── domain_error │ ├── length_error...called after throwing an instance of... } 解决方案:使用全局异常捕获 int main() try { riskyFunction(); } catch...::make_shared/std::make_unique 对于不可恢复错误,使用std::terminate 使用类型安全的异常参数 通过合理运用异常处理机制,可以构建出更健壮、更易维护的

    13710

    【C++进阶篇】走进C++的异常世界:从抛出到捕获的全方位解读

    如果到main函数之前还没有,程序会调用terminate终止程序运行。 如果找到,catch匹配的代码继续运行。...输出结果: Lambda: 10 捕获标准异常: 运行时错误:空指针异常 1.4 异常重新抛出 异常重新抛出(Re-throwing Exceptions)是 C++ 异常处理中的重要机制,允许在捕获异常后将其原样或修改后再次抛出...runtime_error("数据预处理失败: " + string(e.what()));//异常重新抛出 } return 0; } 输出结果: 底层捕获异常: 值不能为负数 terminate...called after throwing an instance of ‘std::runtime_error’ what(): 数据预处理失败: 值不能为负数 1.5 异常安全 抛出异常后,...如果一个函数已经抛出异常,而这个函数又被noexcept修饰,程序调用terminate终止程序。

    56610

    C++ 异常处理机制详解:从基础语法到工程实践

    :cpp复制编辑#include 异常类型描述std::exception所有标准异常的基类std::runtime_error运行时错误(如溢出)std::logic_error...逻辑错误(程序员失误)std::out_of_range容器越界访问std::invalid_argument参数无效std::length_error容器过长引发错误标准异常类都实现了 what()...方法用于获取错误信息:cpp复制编辑catch (const std::exception& e) { std::cerr std::endl;}五、自定义异常类可以根据项目需求自定义异常类型...called after ...七、异常安全性(Exception Safety)C++ 中函数按异常安全性可分为四个级别:7.1 不安全(No Guarantee)函数可能抛出异常,且对象状态不可预测...,否则若在栈展开过程中再次抛异常,程序将直接调用 std::terminate() 终止运行。

    59610
    领券