error C2713: Only one form of exception handling permitted per function

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; 

 }

 总之:只要保证所有的函数内只有一个异常处理,函数就不会报上述错误。

你可能感兴趣的:(exception)