C++ Primer 5th笔记(chap 18 大型程序工具)异常处理

2024-03-28 08:38

本文主要是介绍C++ Primer 5th笔记(chap 18 大型程序工具)异常处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 异常处理 ( exception handling)

允许程序中独立开发的部分能够在运行时就出现的问题进行通信并做出相应的处理。

异常使得我们能够将问题的检测与解决过程分离开来。 程序的一部分负责检测问题的出现, 然后解决该问题的任务传递给程序的另一部分

1.1 栈展开( stack unwinding)

当抛出一个异常后, 程序暂停当前函数的执行过程并立即开始寻找与异常匹配的catch 子句。 当 throw 出现在一个 try 语句块( try block) 内时, 检查与该 try 块关联的 catch 子句。 如果找到了匹配的 catch, 就使用该 catch 处理异常。 如果这一步没找到匹配的 catch 且该 try 语句嵌套在其他 try 块中, 则继续检查与外层 try 匹配的catch 子句。 如果还是找不到匹配的 catch, 则退出当前的函数, 在调用当前函数的外层函数中继续寻找。

当找不到匹配的 catch时, 程序将调用标准库函数 terminate, 顾名思义, terminate 负责终止程序的执行过程

1.2 栈展开过程中对象被自动销毁

1.3 析构函数与异常

如果一个块分配了资源, 并且在负责释放这些资源的代码前[(D 发生了异常, 则释放资源的代码
将不会被执行。 另 --方面, 类对象分配的资源将由类的析构函数负责释放

1.4 异常对象( exception object )

编译器使用异常抛出表达式来对异常对象进行拷贝初始化

当抛出一条表达式时, 该表达式的静态编译时类型决定了异常对象的类型。 因为很多情况下程序抛出的表达式类型来自于某个继承体系。 如果一条 throw 表达式解引用一个基类指针, 而该指针实际指向的
是派生类对象, 则抛出的对象将被切掉一部分, 只有基类部分被抛出。

这篇关于C++ Primer 5th笔记(chap 18 大型程序工具)异常处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/855066

相关文章

详解如何在SpringBoot控制器中处理用户数据

《详解如何在SpringBoot控制器中处理用户数据》在SpringBoot应用开发中,控制器(Controller)扮演着至关重要的角色,它负责接收用户请求、处理数据并返回响应,本文将深入浅出地讲解... 目录一、获取请求参数1.1 获取查询参数1.2 获取路径参数二、处理表单提交2.1 处理表单数据三、

如何合理管控Java语言的异常

《如何合理管控Java语言的异常》:本文主要介绍如何合理管控Java语言的异常问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍2、Thorwable类3、Error4、Exception类4.1、检查异常4.2、运行时异常5、处理方式5.1. 捕获异常

C++类和对象之初始化列表的使用方式

《C++类和对象之初始化列表的使用方式》:本文主要介绍C++类和对象之初始化列表的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C++初始化列表详解:性能优化与正确实践什么是初始化列表?初始化列表的三大核心作用1. 性能优化:避免不必要的赋值操作2. 强

C++迭代器失效的避坑指南

《C++迭代器失效的避坑指南》在C++中,迭代器(iterator)是一种类似指针的对象,用于遍历STL容器(如vector、list、map等),迭代器失效是指在对容器进行某些操作后... 目录1. 什么是迭代器失效?2. 哪些操作会导致迭代器失效?2.1 vector 的插入操作(push_back,

Java使用WebView实现桌面程序的技术指南

《Java使用WebView实现桌面程序的技术指南》在现代软件开发中,许多应用需要在桌面程序中嵌入Web页面,例如,你可能需要在Java桌面应用中嵌入一部分Web前端,或者加载一个HTML5界面以增强... 目录1、简述2、WebView 特点3、搭建 WebView 示例3.1 添加 JavaFX 依赖3

防止SpringBoot程序崩溃的几种方式汇总

《防止SpringBoot程序崩溃的几种方式汇总》本文总结了8种防止SpringBoot程序崩溃的方法,包括全局异常处理、try-catch、断路器、资源限制、监控、优雅停机、健康检查和数据库连接池配... 目录1. 全局异常处理2. 使用 try-catch 捕获异常3. 使用断路器4. 设置最大内存和线

Spring Validation中9个数据校验工具使用指南

《SpringValidation中9个数据校验工具使用指南》SpringValidation作为Spring生态系统的重要组成部分,提供了一套强大而灵活的数据校验机制,本文给大家介绍了Spring... 目录1. Bean Validation基础注解常用注解示例在控制器中应用2. 自定义约束验证器定义自

Spring Boot Controller处理HTTP请求体的方法

《SpringBootController处理HTTP请求体的方法》SpringBoot提供了强大的机制来处理不同Content-Type​的HTTP请求体,这主要依赖于HttpMessageCo... 目录一、核心机制:HttpMessageConverter​二、按Content-Type​处理详解1.

Linux系统调试之ltrace工具使用与调试过程

《Linux系统调试之ltrace工具使用与调试过程》:本文主要介绍Linux系统调试之ltrace工具使用与调试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、ltrace 定义与作用二、ltrace 工作原理1. 劫持进程的 PLT/GOT 表2. 重定

使用Java编写一个字符脱敏工具类

《使用Java编写一个字符脱敏工具类》这篇文章主要为大家详细介绍了如何使用Java编写一个字符脱敏工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、字符脱敏工具类2、测试工具类3、测试结果1、字符脱敏工具类import lombok.extern.slf4j.Slf4j