欢迎来到天天文库
浏览记录
ID:57631396
大小:21.64 KB
页数:9页
时间:2020-08-29
《C++异常处理机制全解.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C++异常处理机制全解▌异常处理(Exceptionhandling)●返回一个错误码进行异常处理(C语言):例:boolfunc(floata,floatb,float&c){if(b==0){returnfalse;}c=a/b;returntrue;}intmain(){floata=10;floatb=0;floatc=0;boolresult=func(a,b,c);if(!result){cout<<"Thefuncfails!"<2、//func1();//func2();return0;}●try-throw-catch语句(C++);例:voidfunc(floata,floatb,float&c){if(b==0){//如果b为0,则抛出字符串“Dividedbyzero!”;throw"Dividedbyzero";//throw出来的东西可以是任何类型,甚至可以是类的对象;}c=a/b;}intmain(){floata=10;floatb=0;floatc=0;try{//测试条件;func(a,b,c);//func1();//func2();}catch(co3、nstchar*str){//捕获异常信息;cout<4、如果throw抛出了异常,异常类型如果与catch块后面的类型匹配,catch块内的代码将会被执行,在try语句后面可以有多个catch块,程序会寻 找第一个相匹配的catch块,实行catch块的语句代码,然后跳到最后一个catch块的下一行代码,如果没有匹配的catch块,则异常返回上一层try- catch语句,如果没有相应的catch发现,程序将会终结。★catch块不能访问try块里面定义的临时变量。★try-throw-catch的三种写法:例://1voidfunc(){floatx,num,den;...//initializen5、umanddentry{//把操作放到try块里面,不良的写法;if(den==0){throw"Dividedbyzero";}x=num/den;}//...}//2floatdivide(floata,floatb){//在函数体中实现操作,推荐写法;if(b==0){throw"dividedbyzero";}returna/b;}voidfunc(){floatx,num,den;//initializenumanddentry{x=divide(num,den);}catch(constchar*error){cout<6、}//...}//3floatdivide(floata,floatb){if(b==0){throw"dividedbyzero";}returna/b;}floatmiddle(floata,floatb){//嵌套写法,推荐写法;returndivide(a,b);}voidfunc(){floatx,num,den;//initializenumanddentry{x=middle(num,den);}catch(char*error){cout<us7、ingnamespacestd;floatdivide(inta,intb){if(b==0){throw"dividedbyzero";}returnfloat(a)/float(b);}floatmiddle(inta,intb){try{returndivide(a,b);}catch(constchar*str){cout<<"Caughtbyfunctionmiddle."<8、y{x=middle(num,den);}catch(constchar*error){cout<
2、//func1();//func2();return0;}●try-throw-catch语句(C++);例:voidfunc(floata,floatb,float&c){if(b==0){//如果b为0,则抛出字符串“Dividedbyzero!”;throw"Dividedbyzero";//throw出来的东西可以是任何类型,甚至可以是类的对象;}c=a/b;}intmain(){floata=10;floatb=0;floatc=0;try{//测试条件;func(a,b,c);//func1();//func2();}catch(co
3、nstchar*str){//捕获异常信息;cout<4、如果throw抛出了异常,异常类型如果与catch块后面的类型匹配,catch块内的代码将会被执行,在try语句后面可以有多个catch块,程序会寻 找第一个相匹配的catch块,实行catch块的语句代码,然后跳到最后一个catch块的下一行代码,如果没有匹配的catch块,则异常返回上一层try- catch语句,如果没有相应的catch发现,程序将会终结。★catch块不能访问try块里面定义的临时变量。★try-throw-catch的三种写法:例://1voidfunc(){floatx,num,den;...//initializen5、umanddentry{//把操作放到try块里面,不良的写法;if(den==0){throw"Dividedbyzero";}x=num/den;}//...}//2floatdivide(floata,floatb){//在函数体中实现操作,推荐写法;if(b==0){throw"dividedbyzero";}returna/b;}voidfunc(){floatx,num,den;//initializenumanddentry{x=divide(num,den);}catch(constchar*error){cout<6、}//...}//3floatdivide(floata,floatb){if(b==0){throw"dividedbyzero";}returna/b;}floatmiddle(floata,floatb){//嵌套写法,推荐写法;returndivide(a,b);}voidfunc(){floatx,num,den;//initializenumanddentry{x=middle(num,den);}catch(char*error){cout<us7、ingnamespacestd;floatdivide(inta,intb){if(b==0){throw"dividedbyzero";}returnfloat(a)/float(b);}floatmiddle(inta,intb){try{returndivide(a,b);}catch(constchar*str){cout<<"Caughtbyfunctionmiddle."<8、y{x=middle(num,den);}catch(constchar*error){cout<
4、如果throw抛出了异常,异常类型如果与catch块后面的类型匹配,catch块内的代码将会被执行,在try语句后面可以有多个catch块,程序会寻 找第一个相匹配的catch块,实行catch块的语句代码,然后跳到最后一个catch块的下一行代码,如果没有匹配的catch块,则异常返回上一层try- catch语句,如果没有相应的catch发现,程序将会终结。★catch块不能访问try块里面定义的临时变量。★try-throw-catch的三种写法:例://1voidfunc(){floatx,num,den;...//initializen
5、umanddentry{//把操作放到try块里面,不良的写法;if(den==0){throw"Dividedbyzero";}x=num/den;}//...}//2floatdivide(floata,floatb){//在函数体中实现操作,推荐写法;if(b==0){throw"dividedbyzero";}returna/b;}voidfunc(){floatx,num,den;//initializenumanddentry{x=divide(num,den);}catch(constchar*error){cout<6、}//...}//3floatdivide(floata,floatb){if(b==0){throw"dividedbyzero";}returna/b;}floatmiddle(floata,floatb){//嵌套写法,推荐写法;returndivide(a,b);}voidfunc(){floatx,num,den;//initializenumanddentry{x=middle(num,den);}catch(char*error){cout<us7、ingnamespacestd;floatdivide(inta,intb){if(b==0){throw"dividedbyzero";}returnfloat(a)/float(b);}floatmiddle(inta,intb){try{returndivide(a,b);}catch(constchar*str){cout<<"Caughtbyfunctionmiddle."<8、y{x=middle(num,den);}catch(constchar*error){cout<
6、}//...}//3floatdivide(floata,floatb){if(b==0){throw"dividedbyzero";}returna/b;}floatmiddle(floata,floatb){//嵌套写法,推荐写法;returndivide(a,b);}voidfunc(){floatx,num,den;//initializenumanddentry{x=middle(num,den);}catch(char*error){cout<us
7、ingnamespacestd;floatdivide(inta,intb){if(b==0){throw"dividedbyzero";}returnfloat(a)/float(b);}floatmiddle(inta,intb){try{returndivide(a,b);}catch(constchar*str){cout<<"Caughtbyfunctionmiddle."<8、y{x=middle(num,den);}catch(constchar*error){cout<
8、y{x=middle(num,den);}catch(constchar*error){cout<
此文档下载收益归作者所有