Czy kiedykolwiek widziałeś awarię aplikacji? Jeśli tak, wiesz, jak frustrujące może się to stać i jeśli jesteś programistą, prawdopodobnie przeklinasz programistę za to, że nie wprowadził WŁAŚCIWEGO mechanizmu obsługi błędów! I właśnie o to chodzi w tym artykule. Obsługa błędów jest integralną częścią kodu aplikacji, ponieważ wykrywa nieprzewidziane błędy i zapewnia bezpieczne zakończenie aplikacji., Podobnie jak w przypadku większości języków programowania, PowerShell obsługuje również mechanizm obsługi błędów o nazwie try-catch, ale zanim to nastąpi, dowiedzmy się trochę o obsłudze błędów w PowerShell.
dlaczego potrzebujesz obsługi błędów?
dość podstawowe pytanie, które większość z Was może już znać. Mimo to, poruszymy w nim krótko, aby powtórzyć kilka ważnych punktów.
obsługa błędów pomaga w następujący sposób.
- zapobiega awarii aplikacji.
- ułatwia użytkownikowi zrozumienie, że coś jest nie tak i że powinien skontaktować się z zespołem wsparcia.,
- podaje szczegóły dotyczące błędu i jego możliwych przyczyn.
- pomaga w dalszej analizie i rozwiązaniu problemów.
- daje możliwość dostosowania komunikatów o błędach wysyłanych do użytkowników końcowych.
- ułatwia utrzymanie kodu.
- Twój program może nadal działać nawet po wystąpieniu błędu, w zależności od błędu i kodu.
- uważany za dobrą praktykę programistyczną.
teraz, gdy poruszyliśmy zalety obsługi błędów, zobaczmy, jak można je zaimplementować w PowerShell.,
obsługa błędów w PowerShell
Ogólnie rzecz biorąc, istnieją dwa rodzaje błędów i są to: błędy kończące i nie kończące.
błędy kończące i nie kończące
jak sama nazwa wskazuje, błędy kończące to te, które są krytyczne i nagle kończą program, podczas gdy błędy nie kończące pozwalają programowi na uruchomienie, ale mogą dać złe wyniki, a czasami nawet drastyczne wyniki. Jeśli zastanawiasz się, błędy nie kończące są potencjalnie bardziej niebezpieczne niż błędy kończące, ponieważ nie wiesz, jakie aspekty mogą zostać zmodyfikowane.,
niektóre możliwe błędy kończące są pozbawione pamięci i błędów składniowych, podczas gdy duża część błędów w programowaniu logiki i nieoczekiwane błędy należą do kategorii nie kończące.
Konwersja błędów nie kończących na błędy kończące
jako programista możesz powiedzieć Powershellowi, aby traktował błędy nie kończące jako błędy kończące, więc program zatrzymuje się, jeśli napotka ten konkretny błąd. Ta zmiana pomaga obsłużyć błąd za pomocą bloku try-catch PowerShell, ponieważ domyślnie nie można obsłużyć błędów nie kończących się za pomocą bloku try-catch.,
aby przekonwertować błędy nie kończące na błędy kończące, użyj parametru o nazwie ErrorAction. Każdy cmdlet obsługuje ten parametr i jest zaprojektowany, aby powiedzieć programowi, jakie działania powinien podjąć, gdy napotka błąd. ErrorAction zawiera następujące opcje
- Stop: zatrzymuje program i traktuje go jako błąd zakończenia.
- Continue: umożliwia kontynuowanie programu i wyświetlany jest błąd.
- SilentlyContinue: program działa i nie są wyświetlane żadne błędy.
- Ignoruj: ignoruje błąd i kontynuuje.,
- Inquire: wyświetla błąd i sprawdza, czy powinien być kontynuowany.
- Suspend: może być używany w przepływie pracy Windows PowerShell. Ograniczenie polega na tym, że nie może zawiesić zaawansowanych funkcji.
składnia błędu to:
$variable = Get:content \user.txt:ErrorAction Stop
To polecenie zmienia błąd nie kończący się na kończący się, więc możesz go obsłużyć.
budowanie bloku try-catch
Po wystąpieniu błędu kończącego lub przekonwertowaniu nie kończącego na błąd kończący, możesz obsłużyć go za pomocą bloku try-catch PowerShell.,
ogólna składnia to:
w tym przykładzie dane z pliku są przechowywane w zmiennej $i jeśli wystąpi błąd, kod trafia do bloku catch i wyświetla komunikat. Powyższy przykład jest podstawowy, zaprojektowany, aby dać ci wyobrażenie o składni i użyciu. Jednak w prawdziwym świecie, można użyć tego bloku PowerShell try-catch, aby uzyskać wgląd w błąd i podjąć odpowiednie działania.,
praktyczne zastosowania PowerShell try-catch block
możesz uzyskać dostęp do rekordu błędu wewnątrz catch block. W rzeczywistości komunikat o błędzie jest przechowywany w bieżącej zmiennej $_. Możesz zrobić wszystko z tym rekordem błędu, na przykład przeanalizować błąd, wyświetlić Ostrzeżenie i inne. Potężnym atrybutem bieżącej zmiennej jest wyjątek, ponieważ chodzi o to, aby dowiedzieć się więcej o nieoczekiwanych zdarzeniach, które spowodowały zatrzymanie programu. Również sam wyjątek ma wiele atrybutów, takich jak ItemName, GetType, Message, itp.,,
na przykład:
try{$variable = Get:content \user.txt:ErrorAction Stop}catch{write:output $_Exception.Message}
teraz, gdy podstawy są jasne, przejdźmy do części zaawansowanej.
możesz użyć bloku catch, aby wyłapać określone wyjątki, pod warunkiem, że je znasz lub przewidujesz. Na przykład, załóżmy, że chcesz, aby konkretna wiadomość była wyświetlana, jeśli plik nie zostanie znaleziony, a inne komunikaty dla innych wyjątków, Twój kod powinien wyglądać tak:
niektóre punkty do rozważenia przy użyciu try-catch
pamiętaj o następujących punktach podczas korzystania z bloku PowerShell try-catch.,
- między nawiasami końcowymi bloku try a komendą catch nie powinien znajdować się żaden kod. Innymi słowy, słowo „catch” powinno natychmiast znaleźć się w następnej linii po klamrach zamykających blok try
- ten blok PowerShell try-catch jest najbardziej przydatny do obsługi błędów, które mogą wystąpić w programie.
- blok catch wychwytuje każdy wyjątek wyrzucony wewnątrz bloku try niezależnie od jego pochodzenia.
- polecenie PowerShell try-catch jest wygodną alternatywą dla wielu poleceń if.,
- po bloku try może następować dowolna liczba bloków catch, ale powinny one być kolejne bez żadnego innego kodu pomiędzy nimi.
Finally block
istnieje coś, co nazywa się finally block, którego możesz użyć przy użyciu try-catch. Jest to opcja opcjonalna i nie musi być używana przez cały czas. Blok ten wykona wspomniany w nim kod niezależnie od tego, czy wystąpił błąd, czy nie. Blok ten powinien pojawić się zaraz po zamknięciu ostatniego bloku połowu.,
na przykład:
w powyższym przykładzie wpis będzie dodawany do pliku dziennika za każdym razem, gdy zostanie podjęta próba uzyskania dostępu do pliku, niezależnie od tego, czy plik został znaleziony, czy nie.
Try-catch: Wypróbuj i uniknij awarii
obsługa błędów jest ważną częścią każdego programu, ponieważ zapobiega awarii aplikacji i pomaga przeanalizować możliwą przyczynę błędu. PowerShell try-catch block to potężny sposób na przechwytywanie błędów końcowych, dzięki czemu można je bezpiecznie obsłużyć bez powodowania awarii., Pomaga w szczegółowej analizie i zrozumieniu problemu. Z tych powodów jest to niezbędny element w skryptach PowerShell.
Leave a Reply