700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 异常 什么叫异常 如何处理?

异常 什么叫异常 如何处理?

时间:2022-01-19 07:04:35

相关推荐

异常 什么叫异常 如何处理?

一、异常

1.什么叫异常

遇到错误一般是exit或者return,但大型程序不允许关闭或退出,所以就需要一套很好的容错机制

容错包含:异常处理,标准错误码,错误日志log

2.异常的处理流程:

try(检查)->throw(抛出异常)catch->(捕获异常)

try:尝试检查代码块中是否有特定异常,如果有则丢给catch处理

throw: 当发现异常的时候,手动抛出一个异常

catch:捕获异常,也是当try发现异常后,catch处理

总结:当try遇到捕获到异常后try后的代码不会继续执行,直接跳转到catch中

当函数中丢异常throw后,则throw后面的不会执行

catch执行完成后,继续执行catch括号外的代码;

cathch中用三个点,表示可以捕获所有的异常 catch(...){ }

3.抛出不同类型的异常

格式: throw 类型;

注意:当抛出的类型有const修饰的时候,捕获也需要const修饰,严格类型匹配

4.捕获异常

catch(类型 变量){} 特定异常:只可以捕获到指定类型的异常

catch(...){} 所有异常:当catch中是三个点时,表明可以捕获所有异常

如果没有捕获所有异常,或者没有捕获throw对应的异常类型,则内核处理异常

注意:

同一种类型只可以一种catch捕获,通过catch的参数区别相同类型的不同异常

捕获异常的Catch是从第一个开始匹配,catch和throw的类型不同则匹配第二个;

catch(...)必须放所有catch最后,用来处理没有捕获的异常。一般情况下都会有

5.异常嵌套

在异常的try和catch中继续嵌入一个try和catch()

try{throw 12;try{}catch(...){} }catch(){}

6.函数异常申明

在函数声明时,确定抛出的异常类型,增加代码可读性,增加捕获的确定性。

格式: 返回值 函数名(参数列表)throw(类型1,类型2){ }

解析:以上代码中,函数中只可以throw类型1和类型2,不允许丢其他类型

注意:

如果函数异常申明的时候是throw(int)则函数中只可以丢int类型的异常

如果函数异常申明的时候是throw(int)丢double异常,则捕获不到。内核处理

如果函数异常申明的时候是throw(),表明此函数不可以丢异常。不可以有throw

7.丢对象类型异常:

前奏:在丢异常过程中,可以直接对对象类型。Catch也可以捕获对象类型

int fun() throw(int,student)//student为student类{struct student stu;if(stu.id<0){throw stu.id;}if(stu.id>0){throw stu;}}int main(){try{fun();}catch(int error){}catch(student error){}catch(...){}return 0;}

8.标准异常派生类:(自定义的异常类)

定义:写一个类,继承exception类

格式:class student: public excepion{}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。