我应该以与.Net相同的方式处理异常处理吗?
然后,如何在Powershell中从catch块中重新抛出异常?
'throw'是enoungh还是'throw $ _'会更好?
答案 0 :(得分:82)
throw
关键字与.net实现的行为不同:在.net中,您只能抛出System.Exceptions
本身或其后继者,但在PowerShell中,您可以抛出任何内容,并且会自动将其包含在内一个System.Management.Automation.RuntimeException
。请参阅代码段here。
如果您想重新抛出原始异常,可以使用throw
(最常见),throw $_
或throw $_.Exception
ps:内部catch
变量$_
本身并不例外,但System.Management.Automation.ErrorRecord
包含异常