黑马程序员技术交流社区
标题:
关于return的问题
[打印本页]
作者:
guobin_lu
时间:
2013-3-31 19:00
标题:
关于return的问题
static void Main(string[] args)
{
Console.WriteLine(Calc());
Console.ReadKey();
}
static int Calc()
{
int i = 0;
try
{
return i;
}
finally
{
Console.WriteLine("finally");
i++;
}
}
复制代码
为什么先输出 finally 才 return
作者:
许正龙
时间:
2013-3-31 19:09
try{}
catch{}
filally{}语句块中,无论是否出现异常,filally语句中的代码一定会执行的,即使你用return跳出,也会在跳出前执行filally中的代码。finally中的语句一般是用来释放资源的。
作者:
刘松老师
时间:
2013-3-31 19:12
finally中的语句是必须执行的,所以在执行return之前会先检查是否有finally,有就执行finally中发代码,没有就返回
作者:
HM何伟
时间:
2013-3-31 19:18
因为finally中的必须执行,如果先运行了return了,那么程序结束,就读不到了finally了
作者:
张振
时间:
2013-3-31 19:24
try catch finally 各自执行的注释
1.try
执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行。否则不会执行catch里面的内容
2.catch
除非try里面执行代码发生了异常,否则这里的代码不会执行
3.finally
不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally
所以程序先判断有没有finally ,有的话先执行finally,再去return
作者:
DWC_5101
时间:
2013-3-31 19:48
因为 return后,就彻底跳出方法体了,不会再执行里的其他代码!
所以 如果想要执行finally里的代码,必须在return之前。
先执行finally,再执行return,是try-finally的流程!
作者:
张正强
时间:
2013-3-31 20:27
.NET的错误处理机制采用try->catch->finally结构,发生错误时,层层上抛,直到找到匹配的Catch为止。执行顺序:①执行try{}里的code,将结果保存在内存中未返回;②执行 finally {}里的 code;③返回try{}里的执行结果。
try
{ //执行代码,不确定是否会出错 }
catch
{ //出错处理 }
finally
{ //无论怎样,都要执行 }
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2