异常处理主讲教师:#include<iostream>usingnamespacestd;voiddivided(doublea,doubleb){//实现两个浮点数除法doubleresult=a/b;//会不会有问题?cout<<“Result=”<<result<<endl;}intmain(){doublea,b;cout<<“Pleaseinputtwonumbers:”;cin>>a>>b;divided(a,b);//调用divided函数return0;}#include<iostream>#include<cstring>usingnamespacestd;intmain(){char*ch;//字符指针longlongsize;cout<<“Pleaseinputsize:”;cin>>size;cout<<"SizeValue:"<<size<<endl;ch=newchar[size];//申请堆空间,是否有问题?cout<<“Pleaseinputastring:”;cin>>ch;cout<<“StringSize=”<<strlen(ch)<<endl;delete[]ch;//释放堆空间return0;}(Exception):程序有时会遇到运行阶段错误,导致程序无法正常地运行下去。例如:程序试图打开一个不可用的文件请求过多的内存遭遇不能容忍的值说明:运行异常,可以预料,但不能避免,:定义异常。将那些有可能产生错误的语句框定在try语句块中。定义异常处理(捕获异常)。将异常处理的语句放在catch语句块中,以便异常被传递过来时进行处理。抛掷异常。检测是否产生异常,若是,则通过throw语句抛掷异常。:定义异常catch语句:捕获异常throw语句:抛掷异常#include<iostream>usingnamespacestd;voiddivided(doublea,doubleb){//实现两个浮点数除法doubleresult;try{//定义异常if(b==)throwb;//抛掷异常result=a/b;cout<<“Result=”<<result<<endl;}catch(doubleval){//捕获异常cout<<“urs!Exceptionvalueis”<<val<<endl;}}intmain(){doublea,b;cout<<“Pleaseinputtwonumbers:”;cin>>a>>b;divided(a,b);return0;}:try语句块表示块中的语句可能会发生异常,放在其中加以监控。注意:C++只理会受监控的运行异常。throw后面的表达式的类型被称为所引发的异常类型。在try语句块之后必须紧跟一个或多个catch语句,目的是对发生的异常进行处理(注意:try之前不允许出现catch)。catch()括号中的声明只能容纳一个形参,当类型与抛掷异常的类型匹配时,该catch()语句块便称捕获了一个异常而转到其块中进行异常处理。catch()形参的值则为throw语句抛掷的异常值。当异常发生时,try语句块中异常之后的语句不再执行。#include<iostream>usingnamespacestd;voiddivided(doublea,doubleb){//实现两个浮点数除法doubleresult;try{//定义异常if(b==)throwb;//抛掷异常result=a/b;cout<<“a/b=”<<result<<endl;result=b/a;//存在除0异常,未被监控cout<<“b/a=”<<result<<endl;}catch(doubleval){//捕获异常cout<<“urs!Exceptionvalueis”<<val<<endl;}}intmain(){doublea,b;cout<<“Pleaseinputtwonumbers:”;cin>>a>>b;divided(a,b);return0;}++只理会受监控的运行异常#include<iostream>usingnamespacestd;intmain(){intidx;cout<<“Pleaseinputindexvalue:”;cin>>idx;try{//定义
C 第18章 异常处理 来自淘豆网www.taodocs.com转载请标明出处.