我应该以与 .NET 相同的方式处理异常吗?
那么,如何从 PowerShell 中的 catch 块中重新引发异常?
够throw了吗?或者会throw $_更好?
我应该以与 .NET 相同的方式处理异常吗?
那么,如何从 PowerShell 中的 catch 块中重新引发异常?
够throw了吗?或者会throw $_更好?
如果您想重新抛出原始异常,您可以使用throw(最常见的),或throw $_,或throw $_.Exception
ps:内部catch变量$_本身不是异常,而是System.Management.Automation.ErrorRecord包含异常
PowerShell 中的throw关键字的行为与 .NET 实现不同:在 .NET 中,您只能抛出System.Exceptions自身或其后继者,但在 PowerShell 中,您可以抛出任何东西,并且会自动包装到System.Management.Automation.RuntimeException. 请参阅此处的片段。