finally
除了 try 和 catch 子句外,CLR 异常处理支持 finally 子句。 语义与在结构化异常处理块 (SEH) 的 __finally 相同。 __finally 块可以遵循 try 或 catch 块。
备注
finally 块的目的将清理在异常发生后的所有资源。 请注意,finally 块总是执行,即使有异常未引发。 如果托管异常关联在 try 块内,引发 catch 块只执行。
finally 为区分上下文的关键字;请参见 区分上下文的关键字。
示例
下面的示例演示一个简单的 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" );
}
}