语法
很简单,有两种用法,如下:
1、 throw ;
2、 throw exception_obj ;
第一种表示原来的异常对象再次被重新抛出;第二中呢,则表示原来的异常已处理或正在处理中,但此时又引发了另一个异常。示例如下:
void main()
{
try
{
try
{
throw 4;
}
catch(int value)
{
// 第一种用法,原来的异常被再次抛出
// 注意它不需要带参数。
throw;
}
try
{
throw 0.5;
}
catch(double value)
{
// 第二种用法,再次抛出另外的一个异常
// 它的语法和其它正常抛出异常的语法一样。
throw “another exception”;
}
}
catch(...)
{
cout << “unknow exception”<< endl;
}
}
在什么地方异常可以rethrow?
当然,异常的rethrow只能在catch block中,或者说在catch block中抛出的异常才是异常的rethrow,因此注意下面的示例程序中存在语法错误,如下:
void main()
{
try
{
try
{
throw 4;
}
catch(int value)
{
// 这里的语法是对的。
throw;
}
// 但这里的语法却是不对的。
// 不能在这里进行异常的rethrow
throw;
}
catch(...)
{
cout << “unknow exception”<< endl;
}
}
异常rethrow需要注意的问题!
异常rethrow需要注意什么问题呢?看例子先!
void main()
{
try
{