我正在查看一个朋友的一些代码,并说他在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)。
要了解有关那种情况下的异步异常和可靠代码的更多信息,请阅读受约束的执行区域。
慕尼黑的夜晚无繁华
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
- 3 回答
- 0 关注
- 602 浏览
添加回答
举报
0/150
提交
取消