我如何从Powershell中的catch块中重新抛出异常?

pen*_*ake 49 powershell exception-handling exception

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

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

'throw'是enoungh还是'throw $ _'会更好?

Aki*_*kim 89

throwPowerShell中的关键字与.net实现的行为不同:在.net中,您只能抛出throw $_自身或其继承者,但在PowerShell中,您可以抛出任何内容,并自动将其包装成throw $_.Exception.请在此处查看代码段.

如果您想重新抛出原始异常,可以使用catch(最常见),或者$_System.Management.Automation.ErrorRecord

ps:inside throw变量System.Exceptions本身并不是异常,但System.Management.Automation.RuntimeException它包含Exception

  • 注意:在C#中,`throw`表单保留了原始异常的上下文(源位置),但不幸的是,在PowerShell中似乎不是这种情况. (28认同)
  • 现在看来也是如此! (4认同)
  • 哦哇。我想知道他们什么时候改变的。在 2017 年,当我有这个相关问题时绝对不是:/sf/ask/3231374541/ (2认同)
  • @DR - 他们修复它时的任何线索,或者链接到已解决的有关它的问题。只是好奇,我自己也在寻找,但还没有找到。 (2认同)