捕获PowerShell中的意外错误

时间:2015-04-21 06:49:26

标签: powershell error-handling

所以到目前为止,我一直在使用Try/Catch在Powershell中进行错误处理,每当发生错误时,它都会被写入日志文件。

现在我该如何处理意外错误?我应该将整个脚本代码放在Try/Catch块中,还是有更好的方法来执行此操作?

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

是的,有。您可以在脚本顶部定义Trap并记录上一个错误:

trap
{
    Write-host $Error[0] 
}

答案 1 :(得分:0)

你是对的。当您使用默认的try / catch(/ finally)语句时,所有异常都将被捕获在catch块中。

try { 

  Do-Someting

} catch {

  Write-Host "Caught the following error: $($_.Exception.Message)"

} finally {

  Write-Host "Finally, we made it!"

}

当您专门为catch捕获添加异常时,您可以为该异常创建特定的操作:

try{

  Do-Something

} catch [System.Management.Automation.ItemNotFoundException]{

  # catching specific exceptions allows you to have
  # custom actions for different types of errors
  Write-Host "Caught an ItemNotFoundException: $($_.Exception.Message)" -ForegroundColor Red

} catch {

  Write-Host "General exception: $($_.Exception.Message)"

}