【发布时间】:2008-10-14 19:19:28
【问题描述】:
在脚本中,当 command-let 或其他可执行语句出错时,是否有 try/catch 类型的机制可以从这些错误中恢复?我在文档中没有遇到过。
【问题讨论】:
-
未来读者请注意:PowerShell v2 现已推出,支持 Try/Catch/Finally。
标签: powershell scripting try-catch
在脚本中,当 command-let 或其他可执行语句出错时,是否有 try/catch 类型的机制可以从这些错误中恢复?我在文档中没有遇到过。
【问题讨论】:
标签: powershell scripting try-catch
您在要处理异常的代码之前使用Trap [exception-type] {} 块。
【讨论】:
我已在我的 TechNet 杂志专栏(technetmagazine.com,如果您有兴趣的话)中写过这方面的内容。
首先,PowerShell v2 将有一个标准的 Try...Catch,这很棒。
现有的 shell (v1) 支持陷阱 {} 构造。这些必须在异常发生之前定义。此外,大多数 cmdlet 需要 -EA“STOP”参数才能生成可捕获的异常。陷阱可以在任何范围内定义,并且会“冒泡”直到被捕获或到达全局(shell)范围。
在一个陷阱结束时,执行Continue返回到与陷阱相同作用域的下一行代码,或者执行Break离开当前作用域,把异常往上扔。
【讨论】:
这里有人(Adam Weigert)使用 powershell 实现了 try/catch/finally。我用它来代替内置的陷阱状态。看起来更自然。
http://weblogs.asp.net/adweigert/archive/2007/10/10/powershell-try-catch-finally-comes-to-life.aspx
【讨论】: