我无法在谷歌上搜索明确的答案。例如throw 'temper tantrum'
和Write-Error 'temper tantrum' -ErrorAction Stop
之间是否存在实际差异?
它们都会产生终止错误并设置$?为假。我可以看到CategoryInfo和FullyQualifiedErrorId存在差异。操作词是实用。他们有不同的效果吗?在特定情况下,是否有理由偏好另一个?
答案 0 :(得分:6)
throw
生成终止错误,Write-Error
没有-ErrorAction Stop
会产生非终止错误。由于-ErrorAction Stop
将非终止转换为终止错误,因此两条指令基本相同。
但是存在差异。 throw <expression>
使用$error[0].TargetObject
填充<expression>
,而Write-Error <expression> -ErrorAction Stop
却不填充。{/ 1>