finally
Además de las cláusulas try
y catch
, el control de excepciones del CLR admite una cláusula finally
. La semántica es idéntica al bloque __finally
en el control estructurado de excepciones (SEH). Un bloque __finally
puede seguir un bloque try
o catch
.
Comentarios
El propósito del bloque finally
es limpiar los recursos que quedan después de que se haya producido la excepción. Tenga en cuenta que el bloque finally
siempre se ejecuta, incluso si no se produjo ninguna excepción. El bloque catch
solo se ejecuta si se produce una excepción administrada dentro del bloque try
asociado.
finally
es una palabra clave contextual; para obtener más información, vea Palabras clave contextuales.
Ejemplo
En el siguiente ejemplo se muestra un bloque finally
:
// 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" );
}
}
in catch
MyException
in finally