【问题标题】:How can I rethrow an exception from catch block in PowerShell?如何从 PowerShell 中的 catch 块中重新引发异常?
【发布时间】:2012-12-11 12:11:13
【问题描述】:

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

那么,如何在 PowerShell 的 catch 块中重新抛出异常?

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

【问题讨论】:

    标签: powershell exception


    【解决方案1】:

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

    ps:catch里面的变量$_本身并不是异常,而是包含Exception的System.Management.Automation.ErrorRecord


    注意

    PowerShell 中的 throw 关键字的行为与 .NET 实现不同:在 .NET 中,您只能抛出 System.Exceptions 本身或其后继者,但在 PowerShell 中,您可以抛出任何东西,并且会自动包装到 @987654331 @。见 sn-p here

    【讨论】:

    • 注意:在 C# 中,throw 表单保留了原始异常的上下文(源位置),但不幸的是,在 PowerShell 中似乎并非如此。
    • 现在好像是这样!
    • 哇哦。我想知道他们什么时候改的。 2017 年绝对没有,当时我有这个相关问题:stackoverflow.com/questions/46162493
    • @D.R. - 他们修复它时的任何线索,或指向已解决问题的链接。只是好奇,我自己找了一下,但还没有找到。
    猜你喜欢
    • 1970-01-01
    • 2019-07-09
    • 2020-08-23
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    相关资源
    最近更新 更多