尝试Catch在v2.0中不起作用,尽管在4.0中工作

时间:2014-12-15 20:43:08

标签: powershell powershell-v2.0

当我把这个片段放到我的一台机器上的powershell v2.0上时

try{
    $test = 1/0
    write-host "not terminating"
}
Catch{
    write-host "caught"
}
write-host "continuing"

错误会终止脚本并且不会捕获它并且不会继续。我得到的不能除以零错误。

Cannot divide by zero exception message

但是在我的v4.0中,我得到了这个输出

caught
continuing

当我把它放入我的v4.0 powershell时,它会捕获终止错误并继续。什么是交易,这是v2.0的具体问题吗?如何让脚本在powershell v2.0中继续并捕获错误?

1 个答案:

答案 0 :(得分:0)

尝试在try块中添加$ErrorActionPreference = "Stop"。这会将所有错误转换为终止错误。 powershell的v2和v4之间可能存在问题,其中v4将错误定义为终止,但v2不定义。 Try / catch语句仅适用于终止错误。

如果这不起作用,请尝试编写类似的内容:

try {
  $test = 1/0

  if($?) {
     write-host "not terminating"
  }

  else {
      $errors[0].Exception
  }
}

$?是一个自动变量,用于存储上次操作是否成功完成的信息。