当前位置: 首页 > news >正文

C++ 异常处理——学习记录007

1. 概念

程序中的错误分为编译时错误和运行时错误。编译时出现的错误包括关键字拼写出错、语句分号缺少、括号不匹配等,编译时的错误容易解决。运行时出现的错误包括无法打开文件、数组越界和无法实现指定的操作。运行时出现的错误称为异常,对异常的处理称为异常处理,传统的异常处理方法基本上是判断或分支来实现。而采用判断和分支语句处理异常的方法不适合大量异常的处理,也不能处理不可预知的异常。

2. C++ 处理异常的方法

C++处理异常的方法是,若在执行一个函数的过程中出现异常,可以不在本函数立即处理,而是发出一个信号,交给他的上一级(函数调用者)来解决,若上一级也不能解决,则继续交给上一级,直至交给系统。系统会自动调用系统函数terminate,调用abort来终止程序。

3. 代码示例

#include<iostream>
using namespace std;float Div(int x, int y) {if (y == 0) {throw y;			// 抛出float异常}return x / y;
}int main()
{int a = 10, b = 0;try {cout << Div(a, b) << endl;		// 代码保护段}catch(int){cout << "捕获到int型异常" << endl;}catch (double) {}catch (...) {						// 捕获异常cout << "除数为0" << endl;}return 0;
}

4. 总结

  1. 被保护的代码必须放在try语句的大括号中,否则不起作用
  2. 异常捕获catch语句必须有一对大括号,即使括号里没有任何语句
  3. 一个try语句可以对应多个catch语句,catch后紧跟的小括号可以只写类型名称
  4. 如果在throw语句中没有指定异常信息类型,则可以使用catch(...)语句来捕获任何类型的异常
  5. throw语句后可以不跟任何表达式,直接写分号。
http://www.lryc.cn/news/156378.html

相关文章:

  • 【BIM+GIS】“BIM+”是什么? “BIM+”技术详解
  • Flink算子如何限流
  • 垃圾分代收集的过程是怎样的?
  • NPM 常用命令(四)
  • Anaconda虚拟环境下导入opencv
  • Linux设备驱动程序
  • mybatis <if>标签判断“0“不生效
  • 企业数据的存储形式与方案选择
  • 图像处理简介
  • adb server version (19045) doesn‘t match this client (41); killing.的解决办法
  • 实验室的服务器和本地pycharm怎么做图传
  • Vue + Element UI 前端篇(五):国际化实现
  • [ROS]虚拟机ubuntu18.04系统里面运行usb_cam
  • 常用通讯协议比较
  • 鼠标键盘管理 ShareMouse for Mac最新
  • 【ALM工具软件】上海道宁与Perforce为您带来用于整个生命周期的应用程序生命周期管理软件
  • Android图形-架构2
  • 文字验证码:简单有效的账号安全守卫!
  • Shell 运算符及语法结构
  • 为什么要建前缀索引?
  • vite介绍
  • 2023年软件测试常见面试题
  • 关于const指针的一个常见误区
  • @alilclowcode-engine-ext@1.0.5 不支持安装react@^16.3.0
  • Python之列表操作和内存模型
  • 实习面试记录
  • 总结/笔记-vue中的插槽(默认插槽、具名插槽、作用域插槽)
  • QTday5(QT连接TCP通信)
  • 【Docker】安装RabbitMQ
  • 【如何获取数据库表的字段并拼接】