Obsługa wyjątków w Pythonie: Obsługa wyjątków przy użyciu Try z wyjątkiem

Opublikowany: 2021-06-29

Podczas napotkania błędu program Pythona zostaje zakończony. Błędy to generalnie problemy występujące w programie, który zatrzymuje jego wykonanie. Błędy mogą być spowodowane błędem składni lub mogą stanowić wyjątek. Za każdym razem, gdy parser wykryje niepoprawną instrukcję, występuje błąd składni.

Jednak gdy kod z poprawną składnią wygeneruje błąd, jest to znane jako wyjątek. W Pythonie dostępne są różne wbudowane wyjątki. Są one wywoływane wraz z wystąpieniem zdarzeń wewnętrznych, w których zmienia się normalny przebieg programu.

Dlatego wyjątki mogą być zdefiniowane jako pewne nietypowe warunki programu, które powodują przerwanie kodu, a zatem przepływ programu jest przerywany.

Wykonywanie programu zatrzymuje się, gdy tylko napotka wyjątek. To dodatkowo zatrzymuje wykonanie kodu. W związku z tym wyjątki są błędami wynikającymi z czasu wykonywania, których nie może obsłużyć skrypt Pythona.

W przypadku obsługi wyjątków w python język skryptowy Python zapewnia rozwiązanie, dzięki któremu wykonywanie kodu jest kontynuowane i nie ma żadnych przerw. Brak obsługi wyjątków zatrzymuje wykonywanie kodu, który istnieje po kodzie, który zgłasza wyjątek.

W pythonie dostępnych jest kilka wbudowanych opcji, które umożliwiają wykonywanie programu bez żadnych przerw, w tym typowych wyjątków. Wraz z tym istnieje przepis niestandardowych wyjątków Pythona . W przypadku dowolnego programu Pythona typowe wyjątki, które można zgłaszać, to:

  • ZeroDivisionError: ten typ wyjątku występuje, gdy zero jest używane do dzielenia liczby.
  • NameError: Ten typ wyjątku występuje zawsze, gdy program nie może znaleźć nazwy, czy to globalnej, czy lokalnej.
  • IndentationError: nieprawidłowe wcięcie powoduje wystąpienie błędu indentationError.
  • IOError : Niepowodzenie operacji wejścia-wyjścia skutkuje IOError.
  • EOFError: Występuje podczas ciągłego działania programu, nawet gdy

osiągnięto koniec pliku.

Spis treści

Zgłaszanie wyjątku

Do rzucania wyjątku pod pewnymi warunkami używane jest podbicie.
Wykonywanie programu jest zatrzymywane, a skojarzony wyjątek jest wyświetlany na ekranie. Wyświetlanie wyjątków pozwala użytkownikom dowiedzieć się, jaki może być podstawowy problem.

W Pythonie poprzez użycie klauzuli raise możemy zgłosić wyjątek. Aplikacja jest przydatna w przypadkach, gdy program musi zostać zatrzymany przez zgłoszenie wyjątku.

Na przykład: Podobno program potrzebuje około 1 GB pamięci do wykonania i próbuje zająć 1 GB, w takim przypadku, aby zatrzymać wykonywanie programu, może zostać rzucony wyjątek.

Składnia zgłaszania wyjątku:

Klasa_wyjątku,<wartość>

W związku z tym,

  • 'raise' służy do zgłaszania wyjątku w programie.
  • Wartość można podać do wyjątku, który można podać w nawiasie.
  • Dostęp do wartości można uzyskać za pomocą słowa kluczowego „as”. Wartość nadana wyjątkowi może być przechowywana w zmiennej referencyjnej oznaczonej „e”.
  • W celu określenia typu wyjątku wartość można przekazać do wyjątku.

Błąd asercji

Asercję można wykonać w pythonie, zamiast pozwolić na awarię programu. Stwierdza się, że program spełnia określony warunek. Program będzie nadal działał, jeśli warunek jest spełniony. W przeciwnym razie wyjątek AssertionError jest zgłaszany przez program, gdy warunek okaże się fałszywy.

Obsługa wyjątków przez blok try andexcept

Wyjątki rzucone w Pythonie są przechwytywane, a następnie obsługiwane przez try i z wyjątkiem bloków w Pythonie. Kod w bloku try jest wykonywany normalnie jako część programu. Drugi blok zawiera instrukcje, które są wykonywane w odpowiedzi na wyjątki zgłoszone przez program w bloku try.

Program zgłasza wyjątek za każdym razem, gdy napotka błąd w kodzie poprawnym składniowo. Jeśli zgłoszone wyjątki nie będą prawidłowo obsługiwane, nastąpi awaria programów. W takich scenariuszach blok wyjątek określa odpowiedź programu na ten wyjątek.

Zastosowanie klauzuli try andexcept najlepiej zrozumie następujący przykład zaczerpnięty ze wspomnianego źródła.

W takim przypadku za każdym razem, gdy wystąpi wyjątek, program będzie kontynuował działanie i poinformuje użytkownika, że ​​program się nie powiódł, zamiast podawać puste dane wyjściowe.

Zamówienie : pomysły i tematy projektów w Pythonie

Program pokazał typ błędu, który został rzucony przez wywołanie funkcji. Jednak błąd zgłoszony przez funkcję można przechwycić, aby zorientować się, co faktycznie poszło nie tak.

Uruchomienie kodu na komputerze z systemem Windows wygeneruje następujące

Komunikat wyświetlany jako pierwszy wskazuje na AssertionError, przez który użytkownik jest informowany, że funkcja może być wykonana tylko na systemie operacyjnym Linux. Drugi komunikat dalej podaje informację, która funkcja nie mogła zostać wykonana.
Brak, jeśli plik.log wygeneruje dane wyjściowe z komunikatem „Nie można otworzyć pliku.log”.

Program będzie nadal działał, ponieważ jest to komunikat, który przekazuje informacje użytkownikowi. Wiele wbudowanych wyjątków jest dostępnych w dokumentacji Pythona. Jeden wyjątek, jak opisano, pokazano poniżej.

Brak pliku file.log w tym przypadku spowoduje wygenerowanie następujących danych wyjściowych.

Dzięki zastosowaniu większej liczby wywołań funkcji w klauzuli try można wyłapać różne wyjątki. Jednak po wykryciu wyjątku instrukcje klauzuli try zostaną zatrzymane.

Klauzula else

Użycie klauzuli else w instrukcjach może pomóc w nauczeniu programu wykonywania bloku instrukcji tylko wtedy, gdy nie ma wyjątków.

Klauzula else została wykonana tylko dlatego, że nie było wyjątków. Jeśli kod zawiera wyjątki, wynik będzie następujący.

Niestandardowe wyjątki Pythona

Python ma wiele wbudowanych wyjątków, które generują błąd, gdy coś jest nie tak w programie. Jednak użytkownik musi utworzyć pewne niestandardowe wyjątki w przypadkach, w których ma służyć jego celowi.

Można utworzyć nową klasę do definiowania niestandardowych wyjątków. Bezpośrednio lub pośrednio klasy te muszą pochodzić z klasy wbudowanych wyjątków.

Utworzona zostanie klasa zdefiniowana przez użytkownika CustomError, która jest dziedziczona z klasy Exception. Podobnie jak w przypadku innych wyjątków, te wyjątki również są wywoływane przez użycie „podniesienia” z opcjonalnym komunikatem o błędzie.

Wyjątki zdefiniowane przez użytkownika powinny być umieszczane w osobnym pliku za każdym razem, gdy rozwijany jest duży program Pythona. Zwykle jest to dobra praktyka i jest stosowana w większości standardowych modułów, w których wyjątki są definiowane oddzielnie jako error.py lubexcepts.py.

Niestandardowe wyjątki Pythona proste i ponieważ normalne klasy implementują wszystko, również postępują tak samo.

Składnia i przykłady

Rozważmy dwie zmienne, którymi są a i b. Dane wejściowe do zmiennych są pobierane od użytkownika i wykonywany jest podział liczb. Teraz, jeśli mianownik wprowadzony przez użytkownika to zero.

Do obsługi tych wyjątków można dodać do programu bloki try-except. Dla każdego typu kodu, który prowadzi do podejrzenia zgłaszania wyjątków. Należy go umieścić w bloku try instrukcji.

Składnia bloku try

próbować:

#kod

z wyjątkiem Wyjątku 1:

#kod

z wyjątkiem Wyjątku 2:

#kod

#kod

Pokazuje użycie instrukcji try-except, w których kod jest umieszczany w bloku try i jest wykonywany, gdy w kodzie nie ma wyjątków.

Składnia instrukcji else z try-except

próbować

#spróbuj wypowiedzi

Z wyjątkiem wyjątku 1

#kod

W przeciwnym razie

#wykonanie kodu, gdy nie ma wyjątku

Kilka ważnych punktów:

  • Wyjątku nie należy określać za pomocą oświadczenia o wyjątku w Pythonie.
  • Wiele wyjątków można zadeklarować w kodzie za pomocą bloku try, ponieważ wewnątrz bloku try może znajdować się wiele instrukcji, które mogą zgłaszać wyjątki różnych typów.
  • Blok else można określić za pomocą bloku try, który jest wykonywany, gdy blok try nie zgłasza żadnych wyjątków.
  • Blok else powinien zawierać instrukcje, które nie są odpowiedzialne za zgłaszanie wyjątków.

Przeczytaj także: Najważniejsze powody, dla których Python jest popularny wśród programistów

Wniosek

W tym artykule krótko omówiliśmy koncepcję obsługi wyjątków w Pythonie z kilkoma przykładami. Oprócz wbudowanych wyjątków krótko zdefiniowane są również niestandardowe wyjątki Pythona . Teraz możesz poznać znaczenie wyjątków i obsługę wyjątków w python .

Jeśli chcesz dowiedzieć się więcej o języku Pythona i jego implementacji w nauce o danych, możesz zapoznać się z następującym kursem upGrad „Executive PG Program in Data Science”.

Kurs online jest przeznaczony dla wszystkich początkujących profesjonalistów, którzy mieszczą się w grupie wiekowej od 21 do 45 lat. Z ponad 20 sesjami na żywo i praktyczną znajomością ponad 14 narzędzi i języków programowania, kurs poprowadzi Cię w kierunku perfekcji. Wszelkie zapytania mogą być przesyłane. Nasz zespół Ci pomoże.

Ile rodzajów błędów występuje w Pythonie?

W Pythonie istnieją głównie 2 rozróżnialne kategorie błędów — błędy składni i wyjątki. Błędy składni: Błędy składni powstają, gdy dowolna linia kodu ma błędną składnię. Jest to najczęstszy błąd, który jest wykrywany podczas parsowania programu. Błędy obejmują brak operatora, nieprawidłowe wcięcie, błędną pisownię słowa kluczowego, brak dwukropka, pozostawienie nawiasów i inne drobne błędy w składni. Wyjątki: Wyjątki to błędy wykryte podczas wykonywania programu. Gdy program pomyślnie przejdzie test składni, sprawdza błędy logiczne. Python ma bogatą kolekcję wbudowanych wyjątków. Możesz także tworzyć niestandardowe wyjątki zdefiniowane przez użytkownika.

Jaka jest kluczowa różnica między błędem składni a wyjątkiem?

Błąd składni występuje, gdy kod lub wiersz kodu jest niepoprawny składniowo. Gdy w kodzie wystąpi błąd składni, program kończy działanie. Błąd składni może wystąpić z powodu pominięcia dwukropka lub nawet błędnej pisowni słowa kluczowego.
Jednak wyjątki są zupełnie inne. Wyjątek można uznać za anomalię, która zakłóca działanie programu. Nawet jeśli program jest poprawny składniowo, może wystąpić wyjątek. W przeciwieństwie do błędu, kod jest wykonywany do wiersza, w którym występuje wyjątek.

Jaka jest rola słowa kluczowego raise w Pythonie?

Słowo kluczowe raise służy do zgłaszania wyjątku w Pythonie. Typ błędu może być również zgłoszony wraz i można również dodać tekst, który będzie wyświetlany w momencie zgłaszania wyjątku. Jest to bardzo przydatne, gdy musisz sprawdzić swój kod pod kątem danych wejściowych.