Почему я не могу поймать мою нескончаемую ошибку? - PullRequest
1 голос
/ 26 марта 2020

Я хотел бы показать кому-нибудь пример о том, как отлавливать не завершающиеся ошибки в PowerShell.

Я создал эту функцию:

# This will write a non-terminating error
function NonTerminatingErrorExample {
    Param($i = 5)
    if ($i -gt 4) {
        Write-Error "I expected a value less or equal to 4!" 
    }
    Write-Host "However, I can still continue the execution"
}

Однако я не могу ее отловить с -ErrorAction Stop

Try {
    NonTerminatingErrorExample -ErrorAction Stop
} Catch {
    Write-Host "Now you see this message."
}

Я никогда не получаю возвращенный блок catch. Почему?

NonTerminatingErrorExample : I expected a value less or equal to 4!
In Zeile:32 Zeichen:5
+     NonTerminatingErrorExample -ErrorAction Stop
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,NonTerminatingErrorExample

However, I can still continue the execution

1 Ответ

3 голосов
/ 26 марта 2020

Ваша функция не является командлетом и поэтому не поддерживает -ErrorAction. Добавьте [CmdletBinding()] к телу, чтобы сделать его единым, и параметр будет поддерживаться. Вы можете увидеть разницу, если вы Get-Help обе версии: как функция, нет [<CommonParameters>].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...