我尝试捕获finally块,如果发生一些异常,我将从catch块返回,所以最后块仍然执行,如果是,何时?在返回之前还是在返回之后?
这是正确的做法吗?
try
{
// do something
}
catch (Exception)
{
return false;
}
finally
{
if (connection.State == ConnectionState.Open) connection.Close();
}
答案 0 :(得分:6)
返回后会执行“finally”块。 “最后”用于某些实践,例如关闭数据库连接(总是需要完成)
答案 1 :(得分:2)
最后总是执行块。在您的情况下,它将在您的退货声明之前执行。
答案 2 :(得分:1)
你可以尝试自己
private bool test()
{
try
{
int i = 0;
int u = 10 / i;
}
catch (Exception)
{
return false;
}
finally
{
}
return true;
}
所以这是一个除零零例外。执行此代码时,最终将执行并在返回后执行。
就像finally块一样,返回结果就像Runtime一样!
答案 3 :(得分:0)
finally块将始终在代码退出try-catch-finally块之前执行(任何条件如ThreadAbortException阻止finally块执行将阻止代码退出try-catch-finally块)。