我需要一个使用try..catch..finally
子句的示例,其中finally
是 NECESSARY vs try..catch
子句,其中finally
是可选的。下面的示例仅演示了finally
是可选的,因为无论有没有它,它都不会对我的输出产生任何不同。
我的示例(注意:$ErrorActionPreference
是Continue
):
try {
$value = 5 / 0
} catch {
Write-Output "illegal operation"
}
$t = Get-Date
Write-Output ("operation is done at " + "$t")
原因是我需要知道finally
子句变得必要,而不管是什么,只需要放finally
子句。
答案 0 :(得分:1)
finally
子句只是一个逻辑结构,说“无论是否存在错误,都应该在try
块的末尾运行此语句或语句组”。它告诉读取代码的人,try
和finally
块中的代码之间存在逻辑连接(例如,打开和关闭数据库连接)。然而,除此之外,
try {
5 / 0
} catch {
'illegal operation'
}
'continued'
和
try {
5 / 0
} catch {
'illegal operation'
} finally {
'continued'
}
您可以找到关于主题here的一些讨论。
我认为唯一可能产生影响的方法是,如果您在try
区块中退回或退出:
try {
'foo' # <-- displayed
exit
} finally {
'bar' # <-- displayed
}
'baz' # <-- not displayed
但也许这样的事情只是糟糕的设计。