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

Converting if-else to try-catch within PS

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

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

此处get-customcmdlet抛出异常。

所以,我将上面的语句修改如下:

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

请告诉我处理从 get-customcmdlet

生成的 exception 的方法是否正确

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

Try-Catch 检查是否抛出异常,而 if(get-customcmdlet) 检查您的函数 returns 是否不等于 $false$null.

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

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

这样 $var 等于 var2 当函数 returns 异常并且当它 returns 什么都没有或 $false.