“throw”关键字和“Write-Error -ErrorAction Stop”之间有什么区别?

时间:2013-06-27 23:22:17

标签: powershell

我无法在谷歌上搜索明确的答案。例如throw 'temper tantrum'Write-Error 'temper tantrum' -ErrorAction Stop之间是否存在实际差异?

它们都会产生终止错误并设置$?为假。我可以看到CategoryInfo和FullyQualifiedErrorId存在差异。操作词是实用。他们有不同的效果吗?在特定情况下,是否有理由偏好另一个?

1 个答案:

答案 0 :(得分:6)

throw生成终止错误,Write-Error没有-ErrorAction Stop会产生非终止错误。由于-ErrorAction Stop将非终止转换为终止错误,因此两条指令基本相同。

但是存在差异。 throw <expression>使用$error[0].TargetObject填充<expression>,而Write-Error <expression> -ErrorAction Stop却不填充。{/ 1>