Powershell:重试从发生异常的catch块执行函数

时间:2013-12-23 08:36:47

标签: powershell scripting

请考虑以下脚本

Function DivNumbers($num1,$num2)
{
    $value = $num1/num2
    echo "Result is : " $value
}
try
{
   $x = 10
   $y = 0
   DivNumbers $x $y
}
catch
{
   $x = 10
   $y = 0
   DivNumbers $x $y
}

我无法实现上述目标,请建议我该怎么做。

由于

2 个答案:

答案 0 :(得分:0)

在上面的示例中,流程如下:

  1. 执行“try”block
  2. 前往DivNumbers功能
  3. Powershell让您可以通过执行“catch”块来恢复 因为除零发生了
  4. “catch”执行
  5. RuntimeException除以零并且脚本终止
  6. 没有机会达到“echo”结果是:“$ value”
  7. 上述流程描述符可以指导您解决特定情况。

答案 1 :(得分:0)

我会做这样的事情:

Function DivNumbers($num1,$num2)
{
    try
    {
        $value = $num1/$num2
        Write-Host "Result is : " $value
    }
    catch [Exception]
    {
        Write-Host $_.Exception.Message
    }

    return $value
}

$x = 10
$y = 0
$attempts = 3
do
{
    $value = DivNumbers $x $y
    if ($value -ne $NULL)
    {
        break
    }
    sleep 600
    $attempts--
} while ($attempts -gt 0)

由于DivNumbers正在执行“危险”操作,try/catch应位于其中。然后,您可以从外部控制流量。