Aby to naprawić, poszukaj nieprawidłowej składni
- Jeśli Try-Catch nie działa w programie PowerShell, należy sprawdzić niepoprawną składnię i wartości akcji błędów.
- W tym przewodniku wyjaśniono różne sposoby rozwiązania problemu.
XZAINSTALUJ KLIKAJĄC POBIERZ PLIK
- Pobierz narzędzie do naprawy komputera Restoro który jest dostarczany z opatentowanymi technologiami (dostępny patent Tutaj).
- Kliknij Rozpocznij skanowanie znaleźć problemy z systemem Windows, które mogą powodować problemy z komputerem.
- Kliknij Naprawić wszystko w celu rozwiązania problemów wpływających na bezpieczeństwo i wydajność komputera.
- Restoro zostało pobrane przez 0 czytelników w tym miesiącu.
Instrukcja Try-Catch w PowerShell obsługuje błędy i wyjątki w twoim kodzie. Jeśli funkcja Try-Catch nie działa zgodnie z wyjątkami w programie PowerShell, może to być frustrujące.
W tym przewodniku omówimy wszystkie sposoby rozwiązania problemu wraz z prawdopodobnymi przyczynami problemu. Zaczynajmy!
Co powoduje, że Try-Catch nie działa w PowerShell?
Mogą istnieć różne powody, dla których instrukcja nie działa w programie PowerShell. Oto niektóre z najczęstszych:
- Domyślny zestaw ErrorAction – Jeśli ErrorAction jest ustawiona na Kontynuuj, to Try-Catch nie będzie działać zgodnie z oczekiwaniami.
- Błędy składniowe – Jeśli użyta składnia jest niewłaściwa, formatowanie jest nieprawidłowe lub brakuje słów kluczowych, Try-Catch nie będzie działać.
- Zachowanie polecenia cmdlet lub funkcji – Niektóre funkcje i polecenia cmdlet mają swoje zachowanie związane z obsługą błędów, które może nie być zgodne z Try-Catch.
- Niepoprawna logika lub użycie zmiennych – W przypadku niewłaściwego użycia zmienne lub nieprawidłowa logika, wówczas Try-Catch nie będzie działać.
Co mogę zrobić, jeśli Try-Catch nie działa w PowerShell?
1. Sprawdź składnię
- Najpierw musisz sprawdzić, czy użyłeś poprawnej składni dla używanej wersji PowerShell.
- Następnie sprawdź, czy umieściłeś bloki Try i Catch we właściwej kolejności.
- Poniżej wymieniono podstawową składnię Try-Catch. Zastąp # kod do uruchomienia tutaj kodem i # kod obsługi błędów tutaj kodem obsługi błędów:
Próbować {
# kod do uruchomienia tutaj
}
Złapać {
# kod obsługi błędów tutaj
}
2. Sprawdź, czy przechwytujesz określony błąd
Musisz sprawdzić, czy przechwytujesz określone błędy, które chcesz obsłużyć, a nie wszystkie błędy. Wykonaj następujące kroki, aby zrobić to samo:
- wciśnij
Okna
typ klucza PowerShell, i kliknij Uruchom jako administrator. - Aby przechwycić błąd, musisz użyć metody $ zmiennej w bloku Catch, aby uzyskać dostęp do informacji o zgłoszonym błędzie. Sprawdźmy ten sam przykład, aby lepiej zrozumieć:
Próbować {
Get-ChildItem -Ścieżka C:\DoesNotExist
}
Złapać {
if ($_.Wyjątek. GetType().Name -eq "DirectoryNotFoundException") {
Wyjście zapisu „Nie znaleziono katalogu”.
}
w przeciwnym razie {
wyrzuć $_.Wyjątek|
}
}
3. Ustaw wartość ErrorAction
Wartość domyślna ErrorAction to Kontynuuj; jednak, aby Try-Catch działał, należy ustawić wartość ErrorAction na Stop. Aby to zrobić, wykonaj następujące kroki:
- otwarty PowerShell jako administrator.
- Musisz użyć polecenia cmdlet Set-StrictMode lub parametru ErrorAction w poszczególnych poleceniach cmdlet. Aby lepiej to zrozumieć, spójrzmy na przykład:
Próbować {
Get-ChildItem -Ścieżka C:\DoesNotExist -ErrorAction Stop
}
Złapać {
Wyjście zapisu $_.Wyjątek. Wiadomość
}
- Oto jak odzyskać klucz BitLocker z OneDrive
- Jak korzystać z Phone Link dla iPhone'a w systemie Windows 11
- DaVinci Resolve Wysokie użycie procesora: jak je zmniejszyć
4. Użyj poprawnego typu wyjątku
Ważne jest, aby używać poprawnych wyjątków podczas korzystania z Try-Catch, ponieważ może on obsługiwać tylko wyjątki System. Typ wyjątku. Jeśli korzystałeś z non-System. Błędy wyjątków, a następnie Try-Catch nie będzie działać.
Co do braku systemu. Wyjątek, musisz użyć mechanizmu obsługi błędów frameworka NET lub złapać błąd.
5. Unikaj zakończenia skryptu
Jeśli twój skrypt zostanie zakończony przed osiągnięciem bloku Catch, Try-Cach nie będzie miał szansy obsłużyć błędu. Aby uniknąć zakończenia skryptu, wykonaj następujące kroki:
- Początek PowerShell z uprawnieniami administratora.
- Musisz użyć tzw Kontynuować oświadczenie po Złapać blok. Zrozummy to na przykładzie:
Próbować {
Get-ChildItem -Ścieżka C:\DoesNotExist
}
Złapać {
Wyjście zapisu $_.Wyjątek. Wiadomość
Kontynuować
}
6. Użyj Try-Catch-Wreszcie
Jeśli instrukcja Try-Catch nadal nie działa, możesz zamiast tego użyć konstrukcji Try-Catch-Finally. Gwarantuje to, że kod zostanie wykonany do końca, nawet jeśli zostanie zgłoszony wyjątek.
- otwarty PowerShell jako administrator.
- Wpisz polecenie za pomocą Spróbuj-złap-wreszcie. Oto przykład, aby lepiej zrozumieć skrypt:
Próbować {
# Twój kod tutaj
}
Złap [System. Wyjątek] {
# Kod obsługi wyjątków tutaj
}
Wreszcie {
# Kod czyszczenia tutaj
}
Oto sposoby rozwiązania problemu z niedziałającym Try Catch w PowerShell. Jeśli masz jakieś pytania dotyczące Try-Catch, zadaj je w sekcji komentarzy poniżej. Chętnie pomożemy!
Jeśli chcesz wiedzieć, jak zatrzymać zamykanie programu PowerShell po uruchomieniu skryptu, możesz to przeczytać.
Nadal masz problemy? Napraw je za pomocą tego narzędzia:
SPONSOROWANE
Jeśli powyższe porady nie rozwiązały problemu, na komputerze mogą wystąpić głębsze problemy z systemem Windows. Polecamy pobierając to narzędzie do naprawy komputera (ocenione jako „Świetne” na TrustPilot.com), aby łatwo sobie z nimi poradzić. Po instalacji wystarczy kliknąć Rozpocznij skanowanie przycisk, a następnie naciśnij Naprawić wszystko.