为了账号安全,请及时绑定邮箱和手机立即绑定

如果我在Try块中返回值,那么Final语句中的代码会触发吗?

如果我在Try块中返回值,那么Final语句中的代码会触发吗?

绝地无双 2019-09-21 15:06:31
我正在查看一个朋友的一些代码,并说他在try-finally块中使用了return语句。即使try块的其余部分没有触发,Finally部分中的代码是否仍会触发?例:public bool someMethod(){  try  {    return true;    throw new Exception("test"); // doesn't seem to get executed  }  finally  {    //code in question  }}
查看完整描述

3 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

通常是的。保证finally部分可以执行包括异常或return语句在内的所有操作。这个规则的一个例外是异步异常发生的线程(上OutOfMemoryException,StackOverflowException)。


要了解有关那种情况下的异步异常和可靠代码的更多信息,请阅读受约束的执行区域。


查看完整回答
反对 回复 2019-09-21
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

这是一个小测试:


class Class1

{

    [STAThread]

    static void Main(string[] args)

    {

        Console.WriteLine("before");

        Console.WriteLine(test());

        Console.WriteLine("after");

    }


    static string test()

    {

        try

        {

            return "return";

        }

        finally

        {

            Console.WriteLine("finally");

        }

    }

}

结果是:


before

finally

return

after


查看完整回答
反对 回复 2019-09-21
  • 3 回答
  • 0 关注
  • 602 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信