我尝试了 catch finally 块,如果发生一些异常,我将从 catch 块返回,所以 finally 块仍然被执行,如果是,什么时候?退货前还是退货后?
这是正确的做法吗?
try
{
// do something
}
catch (Exception)
{
return false;
}
finally
{
if (connection.State == ConnectionState.Open) connection.Close();
}
我尝试了 catch finally 块,如果发生一些异常,我将从 catch 块返回,所以 finally 块仍然被执行,如果是,什么时候?退货前还是退货后?
这是正确的做法吗?
try
{
// do something
}
catch (Exception)
{
return false;
}
finally
{
if (connection.State == ConnectionState.Open) connection.Close();
}
返回后它将执行“finally”块。“Finally”用于一些练习,例如关闭数据库连接(总是需要做的)
finally 块总是被执行。在您的情况下,它在您的 return 语句之前执行。
你可以自己试试
private bool test()
{
try
{
int i = 0;
int u = 10 / i;
}
catch (Exception)
{
return false;
}
finally
{
}
return true;
}
所以这是一个除以零的例外。当您执行此代码时,finally 将执行,return 后将执行。
在 finally 阻塞的情况下返回的结果类似于运行时!
finally 块将始终在代码退出 try-catch-finally 块之前执行(任何像 ThreadAbortException 这样阻止 finally 块执行的条件都会阻止代码退出 try-catch-finally 块)。