72

我应该以与 .NET 相同的方式处理异常吗?

那么,如何从 PowerShell 中的 catch 块中重新引发异常?

throw了吗?或者会throw $_更好?

4

1 回答 1

124

如果您想重新抛出原始异常,您可以使用throw(最常见的),或throw $_,或throw $_.Exception

ps:内部catch变量$_本身不是异常,而是System.Management.Automation.ErrorRecord包含异常


笔记

PowerShell 中的throw关键字的行为与 .NET 实现不同:在 .NET 中,您只能抛出System.Exceptions自身或其后继者,但在 PowerShell 中,您可以抛出任何东西,并且会自动包装到System.Management.Automation.RuntimeException. 请参阅此处的片段。

于 2012-12-11T13:37:48.387 回答