我在PowerShell脚本中放置陷阱{}的位置是否重要?

时间:2016-08-04 17:32:08

标签: powershell error-handling

我有一些带有初始化步骤的PowerShell脚本,最后我放了一个trap{}语句,打算从那一点开始捕获所有未处理的错误

出乎意料的是,我意识到当我在初始化逻辑中蠢蠢欲动时,即使错误发生在定义trap{}之前,也会调用trap{}

一个简单的例子:

Write-Host "Hello"
Write-Out "World"  # Incorrect cmdlet name causes an error

trap{
  Write-Warning "Ouch"
  return $null
}

给出:

Hello
WARNING: Ouch

显然似乎trap{}是在有缺陷的代码行之后定义的,但是有人可以解释为什么这样可行吗?

1 个答案:

答案 0 :(得分:1)

来自about_Trap

  

脚本或命令可以有多个Trap语句。陷阱陈述   可以出现在脚本或命令中的任何位置。

如果您想要更多地控制要捕获异常的代码,可以考虑使用try/catch/finally