除了 try 和 catch 子句外,CLR 异常处理还支持 finally 子句。 语义与结构化异常处理 (SEH) 中的 __finally 块相同。
__finally 块可以跟在 try 或 catch 块之后。
备注
finally 的目的是清理出现异常后留下的任何资源。 请注意,即使未引发异常,也会始终执行 finally 块。 只有在关联的 catch 块内引发托管异常时,才会执行 try 块。
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" );
}
}
in catch
MyException
in finally