Visual C++ .NET/Statement/finally

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Exception Finally

<source lang="csharp">

  1. include "stdafx.h"

using namespace System; void main(){

   for (int i = 0; i < 3; i++){
       try{
           if (i == 0){
               Console::WriteLine("\tCounter = 0");
           }else if (i == 1){
               throw gcnew ApplicationException("\t*Exception* Counter = 1");
           }else{
               Console::WriteLine("\tCounter > 1");
           }
       }catch (ApplicationException ^e){
           Console::WriteLine(e->Message);
       }finally{
           Console::WriteLine("\tDone every time");
       }
   }

}

 </source>


finally block of exceptin catching

<source lang="csharp">

  1. include "stdafx.h"

using namespace System; int main() { try

  {
    // ...
  }
  catch( Exception^ )
  {
  }
  finally
  {
      Console::WriteLine("finally block!");
  }

}

 </source>


Multiple finally blocks

<source lang="csharp">

  1. include "stdafx.h"

using namespace System; int main() {

  try
  {
      try
      {
          throw gcnew Exception("XYZ");
      }
      catch( Exception^ exception)
      {
          Console::WriteLine("Inner catch");
      }
      finally
      {
          Console::WriteLine("Inner finally");
      }
  }
  catch(Exception^ exception)
  {
       Console::WriteLine("Outer catch");
  }
  finally
  {
       Console::WriteLine("Outer finally");
  }

}

 </source>