PowerShell:
Обробка помилок
Як це зробити:
# Базовий Try-Catch для обробки винятків
try {
# Код, який може спричинити помилку
$result = 1 / 0
} catch {
# Що робити, якщо сталася помилка
Write-Host "Ой, сталася помилка: $_"
}
# Виведення згенерованого повідомлення про помилку
try {
Get-Item "nonexistentfile.txt" -ErrorAction Stop
} catch {
Write-Host "Файл не можна знайти."
}
# Використання змінної $Error для перевірки останньої помилки
Поглиблено
PowerShell зробив довгий шлях з часу свого початку як Monad. Обробка помилок стала більш надійною з часом, пропонуючи функції, подібні до інших мов програмування. Синтаксис try-catch-finally
- це один з таких прийомів, запозичених з мов, як C#. До його появи скрипт-розробники значною мірою покладались на перевірку умов і використання автоматичної змінної $Error
.
У PowerShell також є два основні типи помилок: термінуючі та нетермінуючі. Термінуючі помилки зупинять скрипт, якщо їх не перехоплено у блоку try-catch
, тоді як нетермінуючі не зупинять, якщо ви не вкажете -ErrorAction Stop
. Це розрізнення критичне, оскільки воно дозволяє точно контролювати обробку помилок, вирішуючи, чи помилка дійсно вимагає зупинки всього скрипта або може бути просто зареєстрована та ігнорована.
Обробка помилок у PowerShell також дозволяє використовувати блок finally
, який виконується завжди - незалежно від того, чи сталася помилка чи ні. Він чудово підходить для завдань з очистки.
Коли ви глибоко занурені у писання скриптів, ви також можете обробляти конкретні типи винятків, що надає вам ще більший контроль.
Крім того, є стара добра параметри -ErrorVariable
для захоплення помилок без викидання винятку. А змінна $?
повідомляє вам, чи була остання операція успішною. Вони корисні інструменти, хоча трохи менш чистіші, ніж надійний try-catch
.