使用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
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
相关文章推荐
- JavaSE8基础 try...catch...catch 使用众多异常的父类 Exception,去捕获 其所有子类异常
- Java语言核心-使用try-catch捕获单个异常
- 使用try和catch捕获异常
- 二十一天学通C++之使用try/catch捕获异常
- 二十一天学通C++之使用try/catch捕获异常
- paip.提升用户体验---gcc c++ try catch不能捕获异常的解决--使用 SEH Ca6
- iOS中@try@catch@finally捕获异常使用
- iOS中try-catch-finally捕获异常使用
- Java中使用try...catch以及try...catch...finally捕获异常
- C++中的异常捕获与处理:Try、Throw、Catch关键字的理解和使用
- 使用lua实现try-catch异常捕获
- iOS中@try@catch@finally捕获异常使用
- IOS开发之--异常处理--使用try 和 catch 来捕获错误。
- 异常捕获try-catch-finally
- sql server try...catch使用 异常处理 不错的SQL错误处理
- 【C++】try 语句捕获异常,catch子句处理异常
- js中的异常处理try...catch使用介绍
- js中的异常处理try...catch使用介绍
- Java异常捕获之try...catch...finally语句