异常处理
1) 异常的抛出和处理主要使用了以下三个关键字:try, throw, catch
2) 抛出异常即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常。该语句的格式为:throw 表达式;
3) 在try语句块的程序段中(包括在其中调用的函数)发现了异常,且抛弃了该异常,则这个异常就可以被try语句块后的某个catch语句所捕获并处理,捕获和处理的条件是被抛
弃的异常的类型与catch语句的异常类型相匹配
try-catch语句形式如下 :
try
{
包含可能抛出异常的语句;
}
catch(类型名 [形参名]) // 捕获特定类型的异常
{
}
catch(类型名 [形参名]) // 捕获特定类型的异常
{
}
catch(...) // 三个点则表示捕获所有类型的异常
{
}
4) 异常如果没有找到处理代码,程序就调用C++标准库中定义的函数terminate()。terminate()的缺省行为是调用abort() ,指示从程序非正常退出
5) 异常对象的生命周期
a. 产生:throw className()时产生。
b. 销毁:该异常的最后一个catch子句退出时销毁
6) catch块的参数推荐采用地址传递而不是值传递
a. 可以避免由异常对象到catch 子句中的对象的拷贝。
b. 能确保catch子句对异常对象的修改能再次抛出。
c. 确保能正确地调用与异常类型相关联的虚拟函数,避免对象切割。
#include <iostream> #include <exception> using namespace std; int main () { try { throw 1; throw "error"; } catch(char *str) { cout << str << endl; } catch(int i) { cout << i << endl; } }
本博客内容均来自网络,如有雷同,是我抄袭!