我有一些PowerShell腳本,其中包含一些初始化步驟,最後我添加了一條trap{}
語句,打算從該點捕獲所有未處理的錯誤起始。在我的PowerShell腳本中放置陷阱{}的位置是否重要
意外地我意識到,當我在我的初始化邏輯中瘋狂時,即使在定義trap{}
之前發生了錯誤,也會調用trap{}
。
一個簡單的例子:
Write-Host "Hello"
Write-Out "World" # Incorrect cmdlet name causes an error
trap{
Write-Warning "Ouch"
return $null
}
給出:
Hello
WARNING: Ouch
顯然,它似乎並不重要的是,trap{}
是代碼的馬車行後確定,但有人可以解釋爲什麼這工作呢?
陷阱是一個過時的PowerShell功能。你最好使用try catch。 – megamorf