我有一些带有初始化步骤的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{}
是在有缺陷的代码行之后定义的,但是有人可以解释为什么这样可行吗?
答案 0 :(得分:1)