在PS中将if-else转换为try-catch

时间:2018-08-23 05:17:02

标签: windows powershell powershell-v3.0 powershell-v4.0

我有以下PS命令,如下所示:

    if(get-customcmdlet) {
           $var = var1
        } else {
            $var = var2
}

这里get-customcmdlet引发异常。

因此,我对上述声明进行了如下修改:

try {
  get-customcmdlet
  $var = var1
}
catch {
$var = var2
}

请告诉我处理从exception生成的get-customcmdlet的正确方法

1 个答案:

答案 0 :(得分:2)

您必须了解try-catch与以前的if-else有所不同。

Try-Catch检查是否抛出执行,而if(get-customcmdlet)检查函数是否返回不相等的$false$null

鉴于即使在某一点发生异常,您的函数也可以提供某些东西,您可以像这样将两者组合在一起:

try {
  if(get-customcmdlet) {
      $var = var1
  }
  else {
      $var = var2
  }
}
catch {
  $var = var2
}

当函数返回异常且不返回任何值或$var时,var2等于$false

相关问题