18

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

4

3 回答 3

8

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

于 2008-10-14T19:27:02.510 回答
7

我在我的 TechNet 杂志专栏(technetmagazine.com,如果您有兴趣的话)中对此进行了介绍。

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

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

在陷阱结束时,执行 Continue 以返回与陷阱相同范围内的下一行代码,或者执行 Break 以离开当前范围并抛出异常。

于 2008-11-24T21:52:11.700 回答
2

这是使用 powershell 实现 try/catch/finally 的人(Adam Weigert)。我用它来代替内置的陷阱状态。显得更自然。

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

于 2008-11-11T20:44:11.130 回答