作为一门如此牛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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。