Powershell: Trap continue прерывает весь цикл - PullRequest
0 голосов
/ 07 августа 2020

Попытка создать лучший способ обработки ошибок для некоторых автоматизированных вещей.

Я понимаю, что при использовании "continue" в Trap он должен просто продолжать цикл, но пропустить остальную часть текущей итерации . Однако в следующем коде все работает так, как я ожидал, за исключением l oop, код полностью останавливается, и, что бы я ни пытался, я не могу заставить его продолжать цикл.

trap {
   Clear-Host
   Write-Host "Running script: '$PSCommandPath' as user: '$(whoami)' with process id (PID): '$PID'`n"
   Write-Host "Exception error: " $_
   Write-Host "`nVariables at run time:"
   Get-Variable *
   continue;
}

try {
    throw "TryCatchError"
} catch { Write-Host "test 2 caught" $_ }

throw "TrapError"

#this loop doesnt work
While ($true) { Throw "error"; Start-sleep 1}

Может ли кто-нибудь объяснить, почему, или есть решение, которое позволило бы l oop продолжить, но все еще улавливать (не пытаться / улавливать) ошибку?

1 Ответ

0 голосов
/ 07 августа 2020

На основании комментария, который я сделал так, как я бы это сделал, это handle, это использование оператора try-catch, поскольку это правильный способ сделать это. Это продолжит ваш оператор while изящно и проигнорирует Start-sleep 1; ряд.

While ($true) { 
    try {
            Throw "error"; 
    }
    catch {
       Clear-Host
       Write-Host "Running script: '$PSCommandPath' as user: '$(whoami)' with process id (PID): '$PID'`n"
       Write-Host "Exception error: " $_
       Write-Host "`nVariables at run time:"
       Get-Variable *
        continue;
    }

    Start-sleep 1; 
}
...