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;
}
總之:只要保證所有的函式內只有一個異常處理,函式就不會報上述錯誤。