error C2713: Only one form of exception handling permitted per function
错误的我的处理方式:(C++)
当我在一个函数中同时使用try-catch try-finally的嵌套使用时,会提示上面的错误,错误的意思大概是,不允许在一个函数中出现两种异常的处理方式,我想是不是不能嵌套使用啊,于是我就在一个函数中同时使用这两个,但是不嵌套使用了,错误依然是上面的。现在我没办法了,只能在不在一个函数中同时使用了,我就用了一种折中的方案,即把这两种异常处理方式,分别在两个函数中实现,然后让另一个函数调用其中的一个函数。我们还可以让一个异常处理中包含另一个能处理异常的函数。但是,我们要注意函数的调用次序,保证有异常发生时,我们的try-finally一定能执行到就行了
例如:
#include <iostream>
using namespace std;
class normal_pointer_example
{
public:
normal_pointer_example(){cout<<"构造函数执行!\n";}
~normal_pointer_example(){cout<<"析构函数执行!\n";}
};
class normal_pointer_wrong{};//normal_pointer_wrong异常
bool quit;
void quit_func()
{
if(quit==true)
cout<<"调用quit_func函数!\n";
throw normal_pointer_wrong();
}
normal_pointer_example *Npointer=new normal_pointer_example;
void f()
{
__try
{
}
__finally
{
delete Npointer;
}
}
int main()
{
try
{
quit=true;
quit_func();
delete Npointer; //有异常出现时,这句话不在执行
}
catch (normal_pointer_wrong)
{
bool exceFlag=true;
cout<<"输出normal_pointer_wrong异常!!\n";
if(exceFlag)
f();
}
return 0;
}
总之:只要保证所有的函数内只有一个异常处理,函数就不会报上述错误。