PowerShell Try Catch Finally

2024 年 8 月 29 日 | 阅读 3 分钟

当您需要在脚本块中处理终止错误时,请在PowerShell中使用 Try, Catch, 和 finally 块。

终止错误是指那些阻止语句运行的错误。当PowerShell没有以某种方式处理终止错误时,它也会停止运行使用当前管道的脚本或函数。在其他语言(如C)中,这些错误被称为异常。

Try {........}

Try块 是脚本中您希望PowerShell监视错误的区域。当此块中发生错误时,它首先存储在自动变量 $Error 中。之后,PowerShell搜索 Catch 块来处理它。

如果 Try 块没有匹配的 Catch 块,则PowerShell会在父作用域中搜索合适的 Trap 或 Catch 块。

Try块的语法

以下框显示了try块的语法

Try语句必须至少有一个catch或一个finally块。在上面的语法中,Try关键字后跟花括号中的单个或多个语句。

Catch {.....}

Catch 块 是脚本中处理由Try块生成的错误的部分。 我们可以定义要由Catch块处理的错误类型。 错误类型是 Microsoft .NET 框架的异常。 一个 Try 块可以有多个catch块来处理不同类型的错误。 除了 Catch 块,您还可以使用 Trap 块来处理错误。

Catch块的语法

以下框显示了catch块的语法

错误类型出现在括号中。 最外面的括号表示该元素是可选的。 在上面的语法中,catch 关键字后跟可选的错误类型规范列表和语句列表。 当找到任何一个catch块时,将执行catch块中的语句。

Finally {......}

‘finally’ 块是脚本的一部分,用于释放脚本不再需要的资源。

以下框显示了Finally块的语法

‘finally’ 块后跟包含在花括号中的单个或多个语句,这些语句在每次执行脚本时都会执行。

示例

示例1: 以下示例仅将一个 Catch 块与 Try 块一起使用

在此示例中,Try块中的命令是正确的,因此没有错误,并显示以下输出

    Directory: C:\
Mode      LastWrite        Time         Length Name
----           -------------       ------            ----
d-----       23-02-2019     13:14                found.000
d-----       28-12-2017     19:44                Intel
d-----       15-09-2018     13:03                PerfLogs
d-----       09-10-2019     11:20                powershell
d-r---       15-11-2019     12:01                Program Files
d-r---       15-11-2019     12:23                Program Files (x86)
d-----       22-08-2019     15:20                Temp
d-----       13-07-2019     09:55                TURBOC3
d-r---       29-09-2019     16:20                Users
d-----       15-11-2019     18:06                Windows
d-----       29-01-2019     18:26                xampp
d-----       05-05-2019     12:53                xampplite
-a----       20-11-2019     04:26        4684056 aow_drv.log  

示例2: 以下示例还仅将一个 Catch 块与 Try 块一起使用

在此示例中,Try块中的命令是错误的,因此Try块中存在错误。 因此,我们从catch块获得输出

Error in a Try block.