finally 块用于清除 try 块中分配的任何资源,以及运行任何即使在发生异常时也必须执行的代码。控制总是传递给 finally 块,与 try 块的退出方式无关。
备注
catch 用于处理语句块中出现的异常,而 finally 用于保证代码语句块的执行,与前面的 try 块的退出方式无关。
示例
在此例中,有一个导致异常的无效转换语句。当运行程序时,您收到一条运行时错误信息,但 finally 子句仍继续执行并显示输出。
![]() | |
---|---|
// try-finally using System; public class MainClass { static void Main() { int i = 123; string s = "Some string"; object o = s; try { // Invalid conversion; o contains a string not an int i = (int)o; } finally { Console.Write("i = {0}", i); } } } |
注释
上面的示例将导致引发 System.InvalidCastException
。
尽管捕捉了异常,但仍会执行 finally 块中包含的输出语句,即:
i = 123
有关 finally 的更多信息,请参见 try-catch-finally。
C# 语言规范
有关更多信息,请参见 C# 语言规范中的以下各章节:
-
5.3.3.14 Try-finally 语句
-
8.11 try 语句
-
16 异常
请参见
任务
参考
C# 关键字异常处理语句(C# 参考)
throw(C# 参考)
try-catch(C# 参考)
概念
C# 编程指南其他资源
C# 参考