上一篇我们说到了在PowerShell中用Trap来处理终止性错误,但是我们知道并不是所有的PowerShell命令都可以生成终止形错误的,今天我们就要来说说如何让PowerShell在必要的时候生成终止性错误。
我们要生成终止性错误,这里就需要throw关键字来帮助我们,因为Throw 关键字会导致终止错误。你可以使用 Throw 关键字停止处理命令、函数或脚本。
如下的小例子中,由于我们的环境中是正确存在'C:\XMLSample\New Text Document.txt' 文件路径的,所以运行该脚本并不会报错。
function Test-Error
{
trap [System.Exception]
{
"An error trapped"
}
Get-Content -Path 'C:\XMLSample\New Text Document.txt'
}
Test-Error
可是问题就是当我们因为某种环境需要,而必须让他生成终止性错误呢,这里就用到我们之前所说的throw关键字了,我们可以把需要我们触发生成的错误写入throw语句块内,即使它原本并不会报错,看看如下例子:
function Test-Error
{
trap [System.Exception]
{
"An error trapped"
}
throw
{
Get-Content -Path 'C:\XMLSample\New Text Document.txt'
}
}
Test-Error
当我们运行的时候你会看到,throw抛出了终止性的异常,因为是终止性的错误,作为用来处理终止性错误的Trap关键字语句块也被触发了,你会看到触发了Trap语句块里的语句输出。
An error trapped
ScriptHalted
At line:9 char:5
+ throw
+ ~~~~~
+ CategoryInfo : OperationStopped: (:) [], RuntimeException
+ FullyQualifiedErrorId : ScriptHalted