PowerShell Do-while循环实现错误捕获后重试3次再退出的方法
实现方案
你只需要补充重试次数的判断逻辑即可,修改后的完整代码如下:
function loop() { $attempts = 0 $flags = $false $maxRetry = 3 # 最大尝试次数,可自行调整 do { try { Write-Host '正在执行更新...请稍候!' # 替换为实际需要执行的业务逻辑 # ***Do something action*** Write-Host '提示:更新执行完成!' -BackgroundColor BLACK -ForegroundColor GREEN Start-Sleep 1 $flags = $false } catch { Write-Host '错误:更新执行失败!' -BackgroundColor BLACK -ForegroundColor RED $attempts++ # 达到最大尝试次数直接终止 if ($attempts -ge $maxRetry) { Write-Host "累计失败已达$maxRetry次,超过最大尝试次数,任务终止" $flags = $false break } Write-Host "当前已失败$attempts次,2秒后重试,剩余可重试次数:$($maxRetry - $attempts)" $flags = $true Start-Sleep 2 } } while ($flags) }
修改说明
- 新增可配置的
$maxRetry变量,后续需要调整重试次数直接修改该变量即可 - 在异常捕获分支中增加次数判断,达到上限后直接终止循环,不会再继续重试
- 也可以直接修改循环判断条件为
while ($flags -and $attempts -lt $maxRetry),和上述catch块中的break逻辑效果一致,选一种实现即可
内容的提问来源于stack exchange,提问作者user11343272
相关产品推荐
相关产品推荐

