📅  最后修改于: 2021-01-08 02:52:36             🧑  作者: Mango
当您需要处理脚本块中的终止错误时,请在PowerShell中使用Try,Catch,最后使用块。
终止错误是那些使语句无法运行的错误。当PowerShell无法以某种方式处理终止错误时,它还将停止使用当前管道运行脚本或函数。在其他语言(例如C)中,这些错误称为异常。
尝试块是脚本的一部分,您希望PowerShell可以监视错误。当该块中发生错误时,首先将其存储在自动变量$ Error中。之后,PowerShell搜索Catch块来处理它。
如果Try块没有匹配的Catch块,则PowerShell将在父作用域中搜索适当的Trap或Catch块。
尝试块的语法
下面的框显示了try块的语法:
try
{
Statement-1
Statement-2
Statement-N
}
Try语句必须至少具有一个catch或一个finally块。在上面的语法中,Try关键字后的括号中是单个或多个语句。
Catch块是脚本中处理Try块生成的错误的部分。我们可以定义Catch块要处理的错误类型。错误类型是Microsoft .NET Framework的例外。一个Try块可以具有多个catch块,用于不同类型的错误。除了Catch块,您还可以使用Trap块来处理错误。
Catch块的语法
以下框显示了catch块的语法:
catch [ [] [',' ] *]
{
Statement-1
Statement-2
Statement-N
}
错误类型显示在括号中。最外面的括号表明该元素是可选的。在以上语法中, catch关键字后跟一个可选的错误类型说明列表和一个语句列表。当找到任何一个catch块时,将执行catch块中的语句。
“最终”块是脚本的一部分,用于释放脚本不再需要的资源。
下面的框显示了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.