Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All
Important This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here.

finally

In addition to try and catch clauses, CLR exception handling supports a finally clause. The semantics are identical to the __finally block in structured exception handling (SEH). A __finally block can follow a try or catch block.

The purpose of the finally block is to clean up any resources left after the exception occurred. Note that the finally block is always executed, even if no exception was thrown. The catch block is only executed if a managed exception is thrown within the associated try block.

finally is a context-sensitive keyword; see Context-Sensitive Keywords for more information.

The following example demonstrates a simple finally block:

// keyword__finally.cpp
// compile with: /clr
using namespace System;

ref class MyException: public System::Exception{};

void ThrowMyException() {
   throw gcnew MyException;
}

int main() {
   try {
      ThrowMyException();
   }
   catch ( MyException^ e ) {
      Console::WriteLine(  "in catch" );
      Console::WriteLine( e->GetType() );
   }
   finally {
      Console::WriteLine(  "in finally" );
   }
}

Output

in catch
MyException
in finally

Community Additions

ADD
Show:
© 2015 Microsoft