PowerShell Try Catch Finally

当需要处理脚本块中的终止错误时,请在PowerShell中使用TryCatch,最后使用块。

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

1.Try{……..}块

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

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

Try块的语法

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

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

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

2.Catch {…..}块

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

Catch块的语法

下面是catch块的语法:

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

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

3.Finally {……}块

Finally块是脚本的一部分,用于释放脚本不再需要的资源。
下面是finally块的语法:

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

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

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

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

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

    目录: C:\Users\hema


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2019/5/28      9:16                .anaconda
d-----        2018/9/12     16:14                .android
d-----         2019/9/4     18:14                .atom
d-----       2018/10/31      9:01                .cargo
d-----         2019/7/2     10:31                .conda
d-----        2018/11/6      9:50                .dotnet
d-----       2018/10/23      9:33                .eclipse
d-----       2018/10/11     14:18                .IdeaIC2018.2
d-----        2018/12/8     16:49                .IdeaIC2018.3
d-----         2019/7/2     16:16                .ipynb_checkpoints
d-----        2019/5/28      9:18                .ipython
d-----         2019/7/2     10:23                .jupyter
d-----        2019/5/29     11:23                .keras
d-r---       2019/11/23     21:12                3D Objects
d-----        2018/10/5      8:25                Aptana Rubles
d-r---       2019/11/23     21:12                Contacts
d-r---         2020/2/5     19:07                Desktop
d-r---         2020/2/5     19:05                Documents
d-r---         2020/2/3     17:36                Downloads
d-----        2018/10/4     10:35                eclipse-workspace
d-----        2018/10/5      9:39                eclipsej22-workspace
d-r---       2019/11/23     21:12                Favorites
d-----        2018/9/12     16:14                HBuilder
d-----        2018/9/12     16:44                HBuilder settings
d-----        2018/9/12     16:14                HBuilderProjects
-a----        2020/1/17     22:15           3314 .bash_history
-a----         2019/7/2     10:20             43 .condarc
-a----       2018/11/14     14:03           1166 .firefly.conf
-a----         2020/1/9     21:29           1918 .firefly2.conf
-a----        2019/5/24     14:12             43 .gitconfig
-a----        2019/5/30     21:14           1939 .viminfo
-a----         2019/7/2     10:36            846 Untitled.ipynb
-a----         2019/7/2     16:17          23222 Untitled1.ipynb
... ...

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

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

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

Error in a Try block.

上一篇:PowerShell函数

下一篇:没有了

关注微信小程序
程序员编程王-随时随地学编程

扫描二维码
程序员编程王

扫一扫关注最新编程教程