个性化阅读
专注于IT技术分析

PowerShell try-catch-finally语句

本文概述

当你需要处理脚本块中的终止错误时, 请在PowerShell中使用”try”, “catch”, “finally”。

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

try{……..}

try块是脚本的一部分, 你希望PowerShell监视错误。当该块中发生错误时, 首先将其存储在自动变量$ Error中。之后, PowerShell搜索Catch块来处理它。

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

try块的语法

下面的框显示了try块的语法:

try 
{
          Statement-1
          Statement-2
          Statement-N
}

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

catch{…..}

Catch块是脚本中处理Try块生成的错误的部分。我们可以定义Catch块要处理的错误类型。错误类型是Microsoft .NET Framework的例外。一个Try块可以具有多个catch块, 用于不同类型的错误。除了Catch块, 你还可以使用Trap块来处理错误。

Catch块的语法

以下框显示了catch块的语法:

catch [ [<error type>] [', ' <error type>] *] 
{
          Statement-1
          Statement-2
          Statement-N
}

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

finally{……}

“最终”块是脚本的一部分, 用于释放脚本不再需要的资源。

下面的框显示了finally块的语法:

finally
{
          Statement-1
          Statement-2
          Statement-N
}

在”最终”块之后是单个或多个语句, 这些语句包含在每次执行脚本时都会执行的大括号中。

例子

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

Try
{
Get-ChildItem
}
catch
{
"Error in a Try block."
}

在此示例中, 该命令在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
{
Get-Child
}
catch
{
"Error in a Try block."
}

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

Error in a Try block.

赞(0) 打赏
未经允许不得转载:srcmini » PowerShell try-catch-finally语句
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏