【问题标题】:Converting if-else to try-catch within PS在 PS 中将 if-else 转换为 try-catch
【发布时间】:2018-08-23 05:17:02
【问题描述】:

我有以下 PS 命令如下:

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

这里get-customcmdlet 正在抛出异常。

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

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

请让我知道处理从get-customcmdlet 生成的exception 是否正确

【问题讨论】:

    标签: windows powershell powershell-3.0 powershell-4.0


    【解决方案1】:

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

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

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

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

    这样,$var 等于 var2,当函数返回异常并且什么都不返回时,或者 $false

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多