异常处理

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;  
	}  
}  

 

posted on 2014-10-25 13:52  kangbry  阅读(264)  评论(0编辑  收藏  举报

导航