【问题标题】:Does Windows Powershell have a Try/Catch or other error handling mechanism?Windows Powershell 是否有 Try/Catch 或其他错误处理机制?
【发布时间】:2008-10-14 19:19:28
【问题描述】:

在脚本中,当 command-let 或其他可执行语句出错时,是否有 try/catch 类型的机制可以从这些错误中恢复?我在文档中没有遇到过。

【问题讨论】:

  • 未来读者请注意:PowerShell v2 现已推出,支持 Try/Catch/Finally。

标签: powershell scripting try-catch


【解决方案1】:

您在要处理异常的代码之前使用Trap [exception-type] {} 块。

【讨论】:

  • +0 真正的答案现在是在 PowerShell v2 和更高版本中的 try/catch,如问题评论中所述。我改为 +1d t@Mark Ingram,因为我认为这是一个不会增加太多的重复。 (是的,我知道这是很久以前的事了,但我第一次错过了对这个问题的评论,这是投票最高的)
【解决方案2】:

我已在我的 TechNet 杂志专栏(technetmagazine.com,如果您有兴趣的话)中写过这方面的内容。

首先,PowerShell v2 将有一个标准的 Try...Catch,这很棒。

现有的 shell (v1) 支持陷阱 {} 构造。这些必须在异常发生之前定义。此外,大多数 cmdlet 需要 -EA“STOP”参数才能生成可捕获的异常。陷阱可以在任何范围内定义,并且会“冒泡”直到被捕获或到达全局(shell)范围。

在一个陷阱结束时,执行Continue返回到与陷阱相同作用域的下一行代码,或者执行Break离开当前作用域,把异常往上扔。

【讨论】:

    【解决方案3】:

    这里有人(Adam Weigert)使用 powershell 实现了 try/catch/finally。我用它来代替内置的陷阱状态。看起来更自然。

    http://weblogs.asp.net/adweigert/archive/2007/10/10/powershell-try-catch-finally-comes-to-life.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-01
      • 2022-01-19
      • 2012-04-20
      • 2012-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-11
      相关资源
      最近更新 更多