这是在做项目的过程中碰到异常处理,就看书稍微总结了下,这篇读书笔记只是一个小结,写这个的目的更多的是想留给自己看
异常的定义:
程序执行过程中发生的不正常状态。
异常处理的优点:
增加程序健壮性;将错误处理代码与正常程序分隔开;函数可以将异常抛给其调用者。
异常处理的特点:
throw 语句相当于一个内部函数调用,只是调用的不是函数而是catch块。 但是与内部函数调用不同的情况是catch块执行完后程序流不会返回到throw语句而是会执行catch块的下一条语句。而且catch块没有返回值。
异常处理模版:
try{
Code;
throw exception;
More Code;
}
catch(type e){
Code to process the exception;
}
throw catch 的参数type可以用 int 这些基本类型也可以用C++预定义的类,这些类的根为(exception),包含一个虚函数what();这个函数返回一个异常对象的错误信息。
也可以自定义异常类,但通常要派生于exception。
多重异常捕获
try{
}
catch ...
catch ...
多个catch块中的不同类型异常的次序很重要。基类对应 的catch块要在其派生类之后。
异常的传播
重抛出异常 (rethrow)
如果在异常处理中无法处理一个异常,或者它想通知调用者发生了一个异常C++允许它重新抛出一个异常。
try{
statements;
}
catch(TheException &ex){
...
异常规约
在函数头部声明异常规约,表面这个函数会抛出什么异常。有利于写出健壮的程序。
e.g. void check(double side) throw(runtimeexception)
何时使用异常处理机制
异常处理机制是用来解决意外错误状态的,不要用try-catch来处理简单的、意料内的情况。