注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

我的博客

 
 
 

日志

 
 

Powershell错误处理,try catch finally  

2012-02-08 14:50:36|  分类: powershell |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

本帖最后由 blogcncom 于 2010-1-27 17:13 编辑

脚本的调试向来是一个艰巨的任务,在powershell出现以前简直是一场灾难。在powershell中微软终于做出了诸多改进,不但有了$Error、-whatif,也有了ISE.而在语法上也增加了try-catch-finally,终于可以便利的进行调试和错误处理了。
在该语法中,finally并不是必需的,但是个人并不建议去掉该部分。建议将功能的预处理放在try部分,但没有错误时,再在finally完成功能。
下面将用一段代码演示如何进行错误处理。主要功能是将一段字符串写道硬盘上一个新建的文件中,完成后移出变量。-NoClobber表示不覆盖现有文件。
Try
{    
$strContent = "try catch finally" 
Out-File -FilePath d:\test.txt -InputObject $strContent -NoClobber
Write-Host "文件创建成功"
}
Catch [System.UnauthorizedAccessException]
{   
Write-Host "访问失败。错误原因:"$Error[0]
}
Catch [System.IO.DirectoryNotFoundException]
{    
Write-Host "访问失败。错误原因:"$Error[0]
}
Catch
{    Write-Host "访问失败。错误原因:"$Error[0]
}
Finally
{    Remove-Variable strContent
}
按照目前的脚本运行后,成功运行,没有任何错误。如下图
1.bmp
再次运行该脚本,会报下图的错误。这正是-NoClobber发挥了作用。而我们通过System.IO.DirectoryNotFoundException捕获了该异常。在catch部分,我们可以主动去捕获可以想到的错误,这样可以提高脚本的友好性,并可以对此类错误进行主动处理,提高脚本的可用性。
2.bmp
而我们将输出文件的保存位置更改为d:\temp\这个并不存在的目录后,可以发现报如下图的提示,而这正是我们设计的结果。
3.bmp

  评论这张
 
阅读(3310)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018