• C++篇为本人学C++时所做笔记(特别是疑难杂点),全是硬货,虽然看着枯燥但会让你收益颇丰,可用作学习C++的一大利器

十三、异常

① 函数指针与该指针所指的函数必须具有一致的noexcept异常说明(C++11使用noexcept指明函数是否抛出异常),而非相同。特别的,隐式声明为noexcept(false)的函数指针可以指向noexcept(true)的函数

② 编译器并不会在编译时检查noexcept声明,编译可以通过

③ 在异常声明的匹配规则中,绝大多数类型转换都不被允许,除了以下3种例外:

(1)允许从非常量到常量的转换;

(2)允许派生类到基类的转换;

(3)数组转数组元素指针,函数转函数指针。除此之外,包括标准算术类型和类类型转换在内,其他的转换规则不能在异常catch匹配中使用

  1. 异常分为两种,一种为运行异常,另一种为检查异常

对于运行异常,编译器没有强制对其进行捕获。会把异常一直往上层抛出,直到遇到处理代码为止

检查异常,所有继承自Exception并且不是运行异常的都是检查异常,在程序中需要用try catch进行捕获。常见的有IO异常和SQL异常

  1. throw语句:throw 表达式; // 表达式的类型决定了所抛出的异常类型,例如throw ‘a’ // 抛出char型异常

throw不加表达式表示再次抛出try块中检测到的异常表达式,该重抛异常不能被try-catch捕获,只能传到上一级函数

  1. 执行throw的时候,不会执行跟在throw后面的语句,而是将程序从throw转移到匹配的catch;throw抛出了异常对象必须是可以复制的类型(具有复制构造函数)

  2. 如果throw抛出了是指针,该指针是一个指向派生类对象的基类指针,则那个对象被分割,只抛出基类部分,且在抛出指针时,必须确保进入异常处理程序时的指针所指向的对象仍然存在

  3. try 块和catch块作为一个整体出现,catch块必须紧跟在try块之后,不能单独使用

C++篇:第十三章_异常_知识点大全的更多相关文章

  1. cc38b_demo_C++_异常_(2)txwtech在异常中使用虚函数-多态

    //cc38b_demo,21days_C++_异常_(2)txwtech20200121在异常中使用虚函数-多态 //--异常层次结构//*异常的类-创建自己的异常类//*异常派生-就是继承//*异 ...

  2. Python-老男孩-02_装饰器_面向对象_封装_继承_异常_接口_数据库

    装饰器其实也是一个函数,它的参数是一个函数 ; 其它函数与装饰器之间建立联系是通过 @装饰器函数名, 感觉有点像Spring的面向切面编程 装饰器函数,如何处理原函数的参数.?  装饰器 原函数返回值 ...

  3. 明解C语言 入门篇 第十三章答案

    练习13-1 /* 打开与关闭文件 */ #include <stdio.h> int main(void) { ]; FILE* fp; printf("请输入你要打开的文件& ...

  4. luogg_java学习_10_异常_反射

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! 异常_反射 异常 异常就是导致程序中断执行的一段指令流 ...

  5. C Primer Plus_第6章_循环_编程练习

    1.题略 #include int main(void) { int i; char ch[26]; for (i = 97; i <= (97+25); i++) { ch[i-97] = i ...

  6. C++第四篇--重载_指针_引用

    C++第四篇--重载_指针_引用 1. 基础知识 重载:函数名相同,根据参数不同(类型.数量.顺序不同)调用同名函数 指针和引用:引用就是别名,引用时必须初始化,引用你定义的变量. int a; in ...

  7. “全栈2019”Java异常第十三章:访问异常堆栈跟踪信息

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...

  8. InvalidClassException异常_原理和解决方案和练习_序列化集合

    InvalidClassException异常_原理和解决方案 当JVM反序列化对象的时候,能找到class文件,但是class文件在序列化对象之后发生了修改,那么反序列化操作也会失败,抛出一个Inv ...

  9. Translent关键字-InvalidClassException异常_原理和解决方案

    Translent关键字 static关键字:静态关键字静态优先于非静态加载到内存中(静态优先于对象进入到内存中)被static修饰的成员变量不能被序列化的,序列化的都是对象private stati ...

  10. MYSQL(进阶篇)——一篇文章带你深入掌握MYSQL

    MYSQL(进阶篇)--一篇文章带你深入掌握MYSQL 我们在上篇文章中已经学习了MYSQL的基本语法和概念 在这篇文章中我们将讲解底层结构和一些新的语法帮助你更好的运用MYSQL 温馨提醒:该文章大 ...

随机推荐

  1. 基于matomo实现业务数据埋点采集上报

    matomo是一款Google-analytics数据埋点采集上报的平替方案,可保护您的数据和客户的隐私:正如它官网的slogan: Google Analytics alternative that ...

  2. ESP32-MicroPython without Thonny

    why witout Thonny? 最近闲来在ESP32上用MicroPython捣鼓些小玩具,见很多教程推荐使用Thonny.欣然往之,竟是个这,实在不能认同.Thonny esp32-Micro ...

  3. 一键修改IP多实例

    一键修改IP多实例-v1 #!/bin/bash #2020-03-01 #auto change ip #By Flyaway ###################### grep "d ...

  4. umich cv-6-2 注意力机制

    这节课中介绍了循环神经网络的第二部分,主要引入了注意力机制,介绍了注意力机制的应用以及如何理解,在此基础上建立了注意力层以及transformer架构 注意力机制 注意力机制 应用与理解 注意力层 t ...

  5. js/javaScript实现金额千分位

    作为前端开发,我们都知道,在实际的需求开发中,难免会遇到需要将接口返回的金额进行千分位格式化的场景.千分位后的金额便于阅读,提升用户体验.金额千分位可以由前端来处理,也可以后端处理后返回给前端展示. ...

  6. Python 潮流周刊#25:性能最快的代码格式化工具 Ruff!

    你好,我是猫哥.这里每周分享优质的 Python.AI 及通用技术内容,大部分为英文.标题取自其中一则分享,不代表全部内容都是该主题,特此声明. 本周刊由 Python猫 出品,精心筛选国内外的 25 ...

  7. JUC并发编程学习(十三)ForkJoin

    ForkJoin 什么是ForkJoin ForkJoin在JDK1.7,并发执行任务!大数据量时提高效率. 大数据:Map Reduce(把大任务拆分成小任务) ForkJoin特点:工作窃取 为什 ...

  8. 生成ios证书最简单的方法

    使用了hbuilderx的uniapp来开发app很方便,但是官网的文档,生成ios的私钥证书却需要使用mac电脑来生成,假如没有mac电脑就无法使用教程的方法来生成ios证书. 因为hbuilder ...

  9. GeminiDB新特性:让Redis广告频控爱不释手的exHASH

    本文分享自华为云社区<GeminiDB新特性:让Redis广告频控爱不释手的exHASH>,作者:GeminiDB-Redis博客 . exHash类型是一种支持Field过期的新型数据类 ...

  10. SpringBoot整合数据可视化大屏使用

    整合数据可视化大屏是现代化应用程序中的一个重要组成部分,它可以帮助我们更直观地展示和理解大量的数据. 在Spring Boot框架中,我们可以使用一些优秀的前端数据可视化库来实现数据可视化大屏,例如E ...