Обработка исключений

Вызов исключений

  • Команда throw "Bad thing happened" создает исключение и прерывает выполнение скрипта.

  • Командлет Write-Error -Message "Houston, we have a problem." -ErrorAction Stop выводит ошибку, а установка ErrorAction в Stop, заставляет скрипт остановиться с этой ошибкой.

Обработка исключений

Принцип обработки ошибок в PowerShell основан на конструкции:

try {
  # код, в котором может произойти ошибка
}
catch {
  # код для обработки ошибки
}
finally {
  # код, который выполняется всегда после try/catch
}
  • Код в блоке try выполняется первым.

  • Если во время выполнения try возникает неустранимая ошибка, управление передается блоку catch. В случае отсутствия ошибок блок catch пропускается.

  • В блоке catch доступна автоматическая переменная $PSItem (или $_) типа ErrorRecord, которая содержит детали исключения.

  • Блок finally выполняется всегда, независимо от того, возникла ошибка или нет. Он используется, чтобы гарантировать выполнение важного кода, например, закрытие соединений или освобождение ресурсов.

  • Можно использовать одновременно и catch, и finally. Это позволяет обрабатывать ошибки и при этом всегда выполнять завершающие действия, независимо от результата.

Пример:

try {
  throw "Bad thing happened"
}
catch {
  Write-Host "Ошибка: $($_.Exception.Message)" -ForegroundColor Red
}
finally {
  Write-Host "Этот блок выполнится всегда"
}

В данном примере исключение вызывается через throw, затем перехватывается в catch, где выводится сообщение об ошибке, и потом происходит выполнение finally, где можно разместить завершающий код.

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

Такой подход к исключениям помогает создавать более устойчивые и удобные для сопровождения PowerShell скрипты, минимизируя неожиданные прерывания и обеспечивая своевременную реакцию на ошибки.

С дополнительной информацией можно ознакомиться по ссылке:

Last updated