C++学习笔记9_异常处理
异常处理
int divide(int a,int b)
{
if(b==0)
{
return -1;//然而,10,-10也是结果-1,所以要抛出异常了
}
}
//在异常不能通过返回值表示,也不能忽略(可能忘记对返回值进行处理)的情况下,需要抛出
int divide(int a,int b)
{
if(b==0)
{
throw b;//随便抛一个东西出去?
//注意,这里和C#不一样,C#的所有异常均继承Exception几类,而且是new Exception("error"),直接在托管堆上new
}
}
int main()
{
try
{
divide(10,0);
}
catch (int)//也可以为catch(int e),异常是根据类型匹配的,这里有点像C#(C# 是 catch(Excpetion e))
{
cout<<"除数为0"<<endl;
}
}
*为了增强可读性,最好有专门的异常接口声明
void func() throw(int,float,char);//这个函数,可能会抛出int,float,char类型的异常。
void func() throw();//不抛出任何异常
*catch(...)//三个点,捕获所有异常,注意,捕获所欲异常,是指能抛出的异常,有些访问越界这样的错误,是没办法捕获,直接挂了的。
注意:
抛出异常,其实和返回一个类型值差不多,所以,也有构造,拷贝,析构的过程。所以,自定义异常类,要做好构造、拷贝、析构的工作。
特别是,有char* errorMsg;这样子的。
throw MyException("aaaa");
catch(MyException &e);//也可以通过引用来接,虽然MyException也属于局部变量,讲道理,执行完函数就析构了,但是,使用catch来接,会在处理完异常,才销毁。这样,就不用执行拷贝构造了。
注意:
不要throw & (MyException("aaaa"))指针,因为如果不是抛出引用,出了方法后,会立刻析构掉!!!
除非 throw new MyException("aaaa");
并且
catch(MyException *e)
{
delete e;
}
* C++有标准的异常基类,叫exception,还有其他派生的异常类。
#include<stdexcept>//标准异常类
throw out_of_range("超出数组界限");//不需要重写什么函数
C++学习笔记9_异常处理的更多相关文章
- WCF 学习笔记之异常处理
WCF 学习笔记之异常处理 1:WCF异常在配置文件 <configuration> <system.serviceModel> <behaviors> <s ...
- Python学习笔记之异常处理
1.概念 Python 使用异常对象来表示异常状态,并在遇到错误时引发异常.异常对象未被捕获时,程序将终止并显示一条错误信息 >>> 1/0 # Traceback (most re ...
- C++学习笔记27:异常处理机制
一.异常处理机制基础 异常的定义 程序中可以检测的运行不正常的情况 异常处理的基本流程 某段程序代码在执行操作时发生特殊情况,引发一个特定的异常 另一段程序代码捕获该异常并处理它 二.异常的引发 th ...
- Oracle 学习笔记 17 -- 异常处理(PL/SQL)
程序异常是在操作期间正常,出现在节目的准备过程是不可避免的例外.但是,必须有一个相应的异常处理机 制,以保证程序的正常运行.PL/SQL程序运行过程中出现的错误.称为异常. 一个优秀的程序都应该可以正 ...
- 《Head First Python》学习笔记03 异常处理
异常(运行时错误): 当代码逻辑遇到意外事件时,比如打开一个文件,却发现文件不存在.这时是增加额外的代码处理逻辑,还是捕获异常呢?答案是:Python优先推荐捕获异常,然后恢复. Python异常机制 ...
- Java学习笔记之异常处理
一.异常的分类 1.由Java虚拟机抛出的异常(Error):程序无法处理的问题,用户不用去进行处理(虚拟机错误丶内存溢出错误丶线程死锁) 2.Exception异常:程序本身可以进行处理的异常 1. ...
- python学习笔记(八):异常处理
一.异常处理 在程序运行过程中,总会遇到各种各样的错误.程序一出错就停止运行了,那我们不能让程序停止运行吧,这时候就需要捕捉异常了,通过捕捉到的异常,我们再去做对应的处理. 下面我们先写一个函数,实现 ...
- 【Python学习笔记】异常处理try-except
Python异常处理 我们一般使用try-except语句来进行异常处理. 使用except Exception as err可以统一捕捉所有异常,而也可以分开处理单个异常. # 分开捕捉单个异常 t ...
- python学习笔记(异常处理)
上次提到正则表达式 当未匹配到数据返回值 None 再使用 match.group 会出现异常 AttributeError 为了避免异常我改成“ match != None” 这次加入异常处理 #! ...
随机推荐
- python 处理excel踩过的坑——data_only,公式全部丢失
用openpyxl读取excel的load_workbook有个data_only参数. yb_wb = load_workbook(u"D:\\Desktop\\xxx.xlsx" ...
- 从零开始入门 K8s | 应用存储和持久化数据卷:核心知识
作者 | 至天 阿里巴巴高级研发工程师 一.Volumes 介绍 Pod Volumes 首先来看一下 Pod Volumes 的使用场景: 场景一:如果 pod 中的某一个容器在运行时异常退出,被 ...
- python 3.7 使用MP3play 模块
因工作需要,做了一个QQ机器人语音播报程序.主要思路 是通过 酷Q 获取QQ消息取出有效信息. 根据信息在百度AI上合成语音,然后本地播放. 在播放语音的时候用了好几个模块 pygame .pyme ...
- Java-Thread01之创建线程
------  ...
- Joomla 3.0.0 -3.4.6远程代码执行(RCE)漏洞复现
Joomla 3.0.0 -3.4.6远程代码执行(RCE)漏洞复现 一.漏洞描述 Joomla是一套内容管理系统,是使用PHP语言加上MYSQL数据库所开发的软件系统,最新版本为3.9.12,官网: ...
- PHP高效产生m个n范围内的不重复随机数(m<=n)
该算法非常巧妙的取随机数的位置(数组的下标),替代取随机数本身,每次取到一个随机数之后,就将其在取值范围中排除,下一次仅会在剩下的数字中取,一次遍历就可以完成随机数的选取,效率相当高. functio ...
- wsgi相关的
目录 web 本质 http协议 请求方式 响应状态码 请求与响应文本格式 目录 web 本质 本质就是浏览器和服务器进行通信, http协议 也叫超文本传输协议(英文:HyperText T ...
- 网络游戏开发-客户端4 关于Egret的本地坐标和舞台坐标
因为最近公司事情比较多,所以没怎么更新博客. 不过咱们这个游戏还是在继续往下写. 今天晚上打算写斗地主的出牌动画,遇到一个问题,就是关于本地坐标和舞台坐标的计算问题 在Egret官网的解释是:x 和 ...
- 总结下var、let 和 const 的区别
一.var变量 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- bugku--web--输入密码查看flag
首先打开网页链接 随机五位数的密码爆破,先用python写一个脚本来生成随机五位数: x=range(0,10) f=open("3.txt",'w') for i in x: f ...