【发布时间】:2012-12-11 12:11:13
【问题描述】:
我应该以与 .NET 相同的方式处理异常吗?
那么,如何在 PowerShell 的 catch 块中重新抛出异常?
throw够了吗?或者throw $_ 会更好吗?
【问题讨论】:
标签: powershell exception
我应该以与 .NET 相同的方式处理异常吗?
那么,如何在 PowerShell 的 catch 块中重新抛出异常?
throw够了吗?或者throw $_ 会更好吗?
【问题讨论】:
标签: powershell exception
如果您想重新抛出原始异常,您可以使用 throw(最常见)、throw $_ 或 throw $_.Exception
ps:catch里面的变量$_本身并不是异常,而是包含Exception的System.Management.Automation.ErrorRecord
PowerShell 中的 throw 关键字的行为与 .NET 实现不同:在 .NET 中,您只能抛出 System.Exceptions 本身或其后继者,但在 PowerShell 中,您可以抛出任何东西,并且会自动包装到 @987654331 @。见 sn-p here。
【讨论】:
throw 表单保留了原始异常的上下文(源位置),但不幸的是,在 PowerShell 中似乎并非如此。