• 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. Vue之属性

    Vue中的属性:举例 看一下就明白了 <!DOCTYPE html> <html lang="en"> <head> <meta char ...

  2. Unity - Win平台修改窗口标题

    原文参考 主要是通过user32.dll获取窗口句柄, 和Unity没有什么关系 using System; using System.Diagnostics; using System.Runtim ...

  3. liunx远程管理常用命令笔记

    1,关机/重启 shutdown -r now : 立刻重启的命令 2,查看或配置网卡信息 2.1  网卡和 IP 地址 2.2  ifconfig 用了管道和grep 查找到 IP 地址 2.3 p ...

  4. 从windows到linux,图形化操作到命令行操作讲解

    作为一个后端开发人员,刚开始进入到职场中,linux还不是必备项.但是随着开发经验的提升,慢慢就会接触到linux,所以就有了那句:开发必须要会linux.一开始我也不知道linux是干嘛的,学那些命 ...

  5. Asp.Net Core webapi+net6 使用资源筛选器(过滤器) 做缓存

    写一个特性类,用来做标记 [AttributeUsage(AttributeTargets.Method)] //只对方法有效 public class ResourceFilterAttribute ...

  6. mysql insert的特殊用法

    1. 正常的insert语句:插入一条数据如下:INSERT INTO `testdb`.`tb_user` (`id`, `userName`) VALUES (3, '张飞'); 2. inser ...

  7. 线上JAVA应用平稳运行一段时间后出现JVM崩溃问题

    一.问题是怎么发现的 系统是一个定时任务系统,需要定时执行业务代码,业务代码主要是访问MYSQL数据库和缓存进行操作,该开始启动,系统日志一切正常,但是运行一段时间到凌晨后,系统就自动崩溃了,java ...

  8. Git如何回到拉取之前的代码

    1.执行git reflog命令查看你的历史变更记录: 2.git reset --hard 2aee3f(拉代码之前的提交记录) Git基础命令总结请参考:https://blog.csdn.net ...

  9. Ubantu使用n升级Node提示权限不够

    升级Node时,常见以下问题: 使用 n stable 时提示权限不够 (base) zibuyu@ubuntu:~/Desktop/luffy$ n stable installing : node ...

  10. 0x06.HelloPHP

    PHP基础 格式 最后一句可以不加分号 <?php echo "hello" ?> 可以不加结束标签,但是最后一句要加分号 <?php echo "he ...