Щоб виправити це, знайдіть неправильний синтаксис
- Якщо Try-Catch не працює в PowerShell, ви повинні перевірити на наявність неправильного синтаксису та значень дій щодо помилок.
- Цей посібник пояснює різні способи вирішення проблеми.
XВСТАНОВИТИ, НАТИСНУВШИ ЗАВАНТАЖИТИ ФАЙЛ
- Завантажте Restoro PC Repair Tool який поставляється із запатентованими технологіями (патент доступний тут).
- Натисніть Розпочати сканування щоб знайти проблеми з Windows, які можуть спричиняти проблеми з ПК.
- Натисніть Відремонтувати все щоб вирішити проблеми, що впливають на безпеку та продуктивність вашого комп’ютера.
- Restoro завантажив 0 читачів цього місяця.
Оператор Try-Catch в
PowerShell обробляє помилки та винятки у вашому коді. Якщо Try-Catch не працює як винятки в PowerShell, це може засмучувати.У цьому посібнику ми розглянемо всі способи вирішення проблеми разом із ймовірними причинами проблеми. Давайте розпочнемо!
Чому проблема Try-Catch не працює в PowerShell?
Можуть бути різні причини, чому оператор не працює в PowerShell. Ось деякі з найпоширеніших:
- Встановлено ErrorAction за замовчуванням – Якщо Для ErrorAction встановлено значення Continue, тоді Try-Catch не працюватиме належним чином.
- Синтаксичні помилки – Якщо використовується неправильний синтаксис, неправильне форматування або відсутні ключові слова, Try-Catch не працюватиме.
- Поведінка командлета або функції – Деякі функції та командлети мають свою поведінку обробки помилок, яка може бути несумісною з Try-Catch.
- Неправильна логіка або використання змінних – Якщо має місце нецільове використання змінні або неправильна логіка, тоді Try-Catch не працюватиме.
Що робити, якщо Try-Catch не працює в PowerShell?
1. Перевірте синтаксис
- По-перше, вам потрібно перевірити, чи використано правильний синтаксис для версії PowerShell, яку ви використовуєте.
- Далі переконайтеся, що ви розмістили блоки Try і Catch у правильній послідовності.
- Основний синтаксис Try-Catch наведено нижче. Замініть # код для запуску тут на код і # код обробки помилок тут на код обробки помилок:
Спробуйте {
# код для запуску тут
}
Виловити {
# код обробки помилок тут
}
2. Перевірте, чи ви перехоплюєте конкретну помилку
Вам потрібно перевірити, чи ви перехоплюєте конкретні помилки, які хочете обробити, а не всі помилки. Виконайте такі дії, щоб зробити те саме:
- Натисніть
вікна
ключ, вид PowerShell, і натисніть Запустити від імені адміністратора. - Щоб перехопити помилку, потрібно використати $ змінна в блоці Catch, щоб отримати доступ до інформації про помилку, яка виникла. Давайте перевіримо приклад того самого, щоб краще зрозуміти:
Спробуйте {
Get-ChildItem -Path C:\DoesNotExist
}
Виловити {
якщо ($_.Виняток. GetType().Name -eq "DirectoryNotFoundException") {
Запис-вивід «Каталог не знайдено».
}
ще {
викинути $_.Exception|
}
}
3. Установіть значення ErrorAction
Значенням за замовчуванням для ErrorAction є Continue; однак, щоб Try-Catch працював, вам потрібно встановити значення ErrorAction на Stop. Для цього виконайте такі дії:
- ВІДЧИНЕНО PowerShell як адміністратор.
- Потрібно використовувати командлет Set-StrictMode або параметр ErrorAction для окремих командлетів. Щоб краще це зрозуміти, розглянемо приклад:
Спробуйте {
Get-ChildItem -Path C:\DoesNotExist -ErrorAction Stop
}
Виловити {
Запис-вивід $_.Виняток. повідомлення
}
- Ось як відновити ключ BitLocker із OneDrive
- Як використовувати Phone Link для iPhone у Windows 11
- DaVinci Resolve High CPU Usage: як його зменшити
4. Використовуйте правильний тип винятку
Під час використання Try-Catch важливо використовувати правильні винятки, оскільки він може обробляти лише винятки системи. Тип винятку. Якщо ви використовували не-System. Помилки винятків, тоді Try-Catch не працюватиме.
Щодо несистемних. Виняток, вам потрібно використовувати механізм обробки помилок фреймворку NET або виявити помилку.
5. Уникайте завершення сценарію
Якщо ваш сценарій завершується до досягнення блоку Catch, Try-Cach не матиме можливості обробити помилку. Щоб уникнути завершення сценарію, виконайте такі дії:
- Запуск PowerShell з правами адміністратора.
- Ви повинні використовувати Продовжити заява після Виловити блокувати. Зрозуміємо це на прикладі:
Спробуйте {
Get-ChildItem -Path C:\DoesNotExist
}
Виловити {
Запис-вивід $_.Виняток. повідомлення
Продовжити
}
6. Використовуйте Try-Catch-Finally
Якщо оператор Try-Catch все ще не працює, замість нього можна використати конструкцію Try-Catch-Finally. Це гарантує, що ваш код виконується до кінця, навіть якщо виникає виняткова ситуація.
- ВІДЧИНЕНО PowerShell як адміністратор.
- Введіть команду за допомогою Спробуй-Спіймай-Нарешті. Ось приклад, щоб краще зрозуміти сценарій:
Спробуйте {
# Ваш код тут
}
Catch [Система. Виняток] {
# Код обробки винятків тут
}
Нарешті {
# Код очищення тут
}
Отже, це способи, за допомогою яких можна вирішити проблему Try Catch не працює в PowerShell. Якщо у вас є запитання щодо Try-Catch, задайте їх у розділі коментарів нижче. Будемо раді допомогти!
Якщо ви хочете знати, як зупинити PowerShell від закриття після виконання сценарію, ви можете прочитати це.
Виникли проблеми? Виправте їх за допомогою цього інструменту:
СПОНСОРОВАНО
Якщо наведені вище поради не допомогли вирішити вашу проблему, на комп’ютері можуть виникнути глибші проблеми з Windows. Ми рекомендуємо завантаження цього інструменту відновлення ПК (оцінка «Чудово» на TrustPilot.com), щоб легко їх вирішити. Після встановлення просто натисніть Розпочати сканування кнопку, а потім натисніть на Відремонтувати все.