Visual C++ .NET/Statement/finally

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

Exception Finally

 
#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");
        }
    }
}


finally block of exceptin catching

 
#include "stdafx.h"
using namespace System;
int main() {
try
   {
     // ...
   }
   catch( Exception^ )
   {
   }
   finally
   {
       Console::WriteLine("finally block!");
   }
}


Multiple finally blocks

 
#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");
   }
}