异常处理

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_异常处理的更多相关文章

  1. WCF 学习笔记之异常处理

    WCF 学习笔记之异常处理 1:WCF异常在配置文件 <configuration> <system.serviceModel> <behaviors> <s ...

  2. Python学习笔记之异常处理

    1.概念 Python 使用异常对象来表示异常状态,并在遇到错误时引发异常.异常对象未被捕获时,程序将终止并显示一条错误信息 >>> 1/0 # Traceback (most re ...

  3. C++学习笔记27:异常处理机制

    一.异常处理机制基础 异常的定义 程序中可以检测的运行不正常的情况 异常处理的基本流程 某段程序代码在执行操作时发生特殊情况,引发一个特定的异常 另一段程序代码捕获该异常并处理它 二.异常的引发 th ...

  4. Oracle 学习笔记 17 -- 异常处理(PL/SQL)

    程序异常是在操作期间正常,出现在节目的准备过程是不可避免的例外.但是,必须有一个相应的异常处理机 制,以保证程序的正常运行.PL/SQL程序运行过程中出现的错误.称为异常. 一个优秀的程序都应该可以正 ...

  5. 《Head First Python》学习笔记03 异常处理

    异常(运行时错误): 当代码逻辑遇到意外事件时,比如打开一个文件,却发现文件不存在.这时是增加额外的代码处理逻辑,还是捕获异常呢?答案是:Python优先推荐捕获异常,然后恢复. Python异常机制 ...

  6. Java学习笔记之异常处理

    一.异常的分类 1.由Java虚拟机抛出的异常(Error):程序无法处理的问题,用户不用去进行处理(虚拟机错误丶内存溢出错误丶线程死锁) 2.Exception异常:程序本身可以进行处理的异常 1. ...

  7. python学习笔记(八):异常处理

    一.异常处理 在程序运行过程中,总会遇到各种各样的错误.程序一出错就停止运行了,那我们不能让程序停止运行吧,这时候就需要捕捉异常了,通过捕捉到的异常,我们再去做对应的处理. 下面我们先写一个函数,实现 ...

  8. 【Python学习笔记】异常处理try-except

    Python异常处理 我们一般使用try-except语句来进行异常处理. 使用except Exception as err可以统一捕捉所有异常,而也可以分开处理单个异常. # 分开捕捉单个异常 t ...

  9. python学习笔记(异常处理)

    上次提到正则表达式 当未匹配到数据返回值 None 再使用 match.group 会出现异常 AttributeError 为了避免异常我改成“ match != None” 这次加入异常处理 #! ...

随机推荐

  1. python 处理excel踩过的坑——data_only,公式全部丢失

    用openpyxl读取excel的load_workbook有个data_only参数. yb_wb = load_workbook(u"D:\\Desktop\\xxx.xlsx" ...

  2. 从零开始入门 K8s | 应用存储和持久化数据卷:核心知识

    作者 | 至天 阿里巴巴高级研发工程师 一.Volumes 介绍 Pod Volumes 首先来看一下 Pod Volumes 的使用场景: 场景一:如果 pod 中的某一个容器在运行时异常退出,被 ...

  3. python 3.7 使用MP3play 模块

    因工作需要,做了一个QQ机器人语音播报程序.主要思路 是通过 酷Q 获取QQ消息取出有效信息. 根据信息在百度AI上合成语音,然后本地播放. 在播放语音的时候用了好几个模块  pygame .pyme ...

  4. Java-Thread01之创建线程

    ------ ![](https://img2018.cnblogs.com/blog/1822322/201910/1822322-20191012203044528-233907422.jpg) ...

  5. Joomla 3.0.0 -3.4.6远程代码执行(RCE)漏洞复现

    Joomla 3.0.0 -3.4.6远程代码执行(RCE)漏洞复现 一.漏洞描述 Joomla是一套内容管理系统,是使用PHP语言加上MYSQL数据库所开发的软件系统,最新版本为3.9.12,官网: ...

  6. PHP高效产生m个n范围内的不重复随机数(m<=n)

    该算法非常巧妙的取随机数的位置(数组的下标),替代取随机数本身,每次取到一个随机数之后,就将其在取值范围中排除,下一次仅会在剩下的数字中取,一次遍历就可以完成随机数的选取,效率相当高. functio ...

  7. wsgi相关的

    目录 web 本质 http协议 请求方式 响应状态码 请求与响应文本格式 目录 web 本质   本质就是浏览器和服务器进行通信, http协议   也叫超文本传输协议(英文:HyperText T ...

  8. 网络游戏开发-客户端4 关于Egret的本地坐标和舞台坐标

    因为最近公司事情比较多,所以没怎么更新博客. 不过咱们这个游戏还是在继续往下写. 今天晚上打算写斗地主的出牌动画,遇到一个问题,就是关于本地坐标和舞台坐标的计算问题 在Egret官网的解释是:x 和 ...

  9. 总结下var、let 和 const 的区别

    一.var变量 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  10. bugku--web--输入密码查看flag

    首先打开网页链接 随机五位数的密码爆破,先用python写一个脚本来生成随机五位数: x=range(0,10) f=open("3.txt",'w') for i in x: f ...