日期:2014-05-19  浏览次数:20890 次

关于try----catch----finally---问题
在函数体内...我使用try----catch----finally
如果我在try{return;}请问在finally{}中的语句还能执行不?
谢谢各位了...

------解决方案--------------------
finally是在try或catch之后执行的,所以你的try中加return的结果是直接使try结果,然后执行finally,这两个部分没有干扰的。
------解决方案--------------------
catch 用于处理语句块中出现的异常,而 finally 用于保证代码语句块的执行,与前面的 try 块的退出方式无关。

------解决方案--------------------
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# 关键字
The try, catch, and throw Statements
异常处理语句(C# 参考)
throw(C# 参考)
try-catch(C# 参考)

概念
C# 编程指南

其他资源
C# 参考