1

作为一门如此牛X闪闪的脚本语言,对异常的处理肯定有良好的支持。那么先看看下面的

Write-Host "1"
try
{
    $s = Get-Content D:\fdafaf.txt
    Write-Host "2"
}catch
{
    Write-Host "FailedItem:$_.Exception.ItemName"
    Write-Host "3"
    break
}
Write-host "4"

很标准的异常处理程序,如果D盘的fdafaf.txt不存在,会抛出异常
但是运行上面的内容,一个很是亮瞎你眼睛的结果出现了

1
Get-Content : 找不到路径“D:\fdafaf.txt”,因为该路径不存在。
所在位置 E:\workspace\Workspaces\PoweShell\wwx.ps1:27 字符: 10
+     $s = Get-Content D:\fdafaf.txt
+          ~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (D:\fdafaf.txt:String) [Get-Content], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

2
4

按照预期,应该是打印出1和3, 也是异常没有捕捉到,直接硬抛了出来。
好吧,我和你一样感觉到很诡异。经过再次查看资料,发现了-ErrorAction的选项
是的,没错,要在$s = Get-Content D:\fdafaf.txt后面加上-ErrorAction选项

    Write-Host "1"
    try
    {
        $s = Get-Content D:\fdafaf.txt -ErrorAction Stop
        Write-Host "2"
    }catch
    {
        Write-Host "FailedItem:$_.Exception.ItemName"
        Write-Host "3"
        break
    }

  Write-host "4"

再次运行,终于,程序执行的结果符合了预期
输出了牛X闪闪的

1
FailedItem:找不到路径“D:\fdafaf.txt”,因为该路径不存在。.Exception.ItemName
3

agentwx
354 声望23 粉丝

引用和评论

0 条评论