我应该以与 .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
. 请参阅此处的片段。