您的位置:首页 > 其它

使用try/catch捕获异常

2009-07-22 08:01 507 查看
在C++中,提供了语句try/catch来捕获异常,其中,try和catch分别用于定义异常和定义异常处理。定义异常是将可能产生错误的语句放在try语句块中。其格式是:
try
{
可能产生错误的语句
}
定义异常处理是将异常处理的语句放在catch语句块中,以便异常被传递来时处理。通常,异常处理是放在try语句块后的由若干个catch语句组成的程序,其格式是:
catch(异常类型声明1)
{
异常处理语句块1
}
catch(异常类型声明2)
{
异常处理语句块2
}
……
catch(异常类型声明n)
{
异常处理语句块n
}
例如,下列语句使用try/catch捕获异常,并定义捕获后对异常的处理。
try
{
string str = null; //定义字符串对象
ProcessString(str); //执行某个函数
}
catch (Exception e) //定义对异常的处理
{
cout<<”Process is error”;
exit(1); //异常退出程序
}

提示:在使用catch语句定义对异常的处理时,其中的参数可以只为某个数据类型,如catch(int)的形式,在具体的环境中其类型不同。

例如:

1.
try
{
NMFTP->Upload("a.txt","a.txt");
}
catch(Exception &E)//E表示程序自己的英文错误提示信息
{
ShowMessage("你的中文提示信息"+E.Message);//E.Message表示程序的错误,前面一个给用户看的提示,后面的是你找错的提示
}

2.
try
{
NMFTP->Download("a.txt","a.txt");
}
catch(Exception &E)
{
ShowMessage("你的中文提示信息"+E.Message);//E.Message表示程序的错误,前面一个给用户看的提示,后面的是你找错的提示
}

try
{
//正常代码
}
catch(错误类或是...)
{
//异常处理代码,当出现catch中的异常时运行
}
__finally
{
//异常处理代码,无论是否出现异常都运行。
}

BCB中提供的异常处理分C++与WIN32的,
前者由try{}catch(){}组成,由throw触发,这种异常是C++语言相关的,VCL异常也由此实现.
后者用以支持WIN32异常,这是与操作系统相关的,由try{}__except(){}或try{}__finally{}组成,由RaiseException 函数触发.
以上三种结构可以嵌套使用但不能随意搭配.VirusHuo说的结构好象不对少写了一个try{}.
__finally块就是指不管是否有异常发生总是要执行的.

也可以释放你所申请的资源.如
try
{
TButton *p=new TButton(this);
...
}
__finally
{
delete p;
}
不管是不是出错,都要执行delete

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: