Python Obsługa wyjątków: spróbuj, złap, w końcu i podnieś [Przykład]
Co to jest obsługa wyjątków Python?
Wyjątkiem jest błąd występujący w czasie wykonywania programu. Jednak podczas uruchamiania programu Python generuje wyjątek, który powinien zostać obsłużony, aby uniknąć awarii programu. W Python język, wyjątki są wyzwalane automatycznie w przypadku błędów lub mogą być wyzwalane i przechwytywane przez Twój kod.
Wyjątek wskazuje, że chociaż zdarzenie może wystąpić, tego typu zdarzenie zdarza się rzadko. Gdy metoda nie jest w stanie obsłużyć wyjątku, jest zgłaszana do funkcji wywołującej. Ostatecznie, gdy z funkcji głównej zostanie zgłoszony wyjątek, program zostaje nagle zakończony.
Typowe przykłady wyjątków
- Dzielenie przez zero
- Dostęp do pliku, który nie istnieje.
- Dodanie dwóch niezgodnych typów
- Próba uzyskania dostępu do nieistniejącego indeksu sekwencji
- Usuwanie tabeli z odłączonego serwera bazy danych.
- Wypłata z bankomatu większej kwoty niż dostępna
Dlaczego warto używać wyjątków?
Oto powody używania wyjątków w Python:
- Obsługa wyjątków umożliwia oddzielenie kodu obsługującego błędy od normalnego kodu.
- Wyjątkiem jest plik Python przedmiot co oznacza błąd.
- Podobnie jak w przypadku komentarzy do kodu, wyjątki pomagają przypomnieć sobie, czego oczekuje program.
- Wyjaśnia kod i zwiększa czytelność.
- Pozwala stymulować konsekwencje, ponieważ obsługa błędów odbywa się w jednym miejscu i w jeden sposób.
- Wyjątkiem jest wygodna metoda obsługi komunikatów o błędach.
- In Python, możesz zgłosić wyjątek w programie, korzystając z metody raise wyjątek.
- Zgłoszenie wyjątku pomaga przerwać bieżące wykonanie kodu i przywraca oczekiwany wyjątek do czasu jego obsługi.
- Przetwarzanie wyjątków dla komponentów, które nie mogą obsłużyć ich bezpośrednio.
Zasady wyjątków
Oto kilka podstawowych zasad Python obsługa wyjątków:
- Wyjątki muszą być obiektami klas
- W przypadku wyjątków klas można użyć instrukcji try z klauzulą wyjątku, która wspomina o konkretnej klasie.
- Nawet jeśli instrukcja lub wyrażenie jest poprawne pod względem składniowym, przy próbie jego wykonania może wyświetlić się błąd.
- Błędy znalezione podczas wykonywania nazywane są wyjątkami i nie są bezwarunkowo krytyczne.
Python Mechanizm obsługi wyjątków
Obsługą wyjątków zajmują się następujące 5 słowa kluczowe:
- próbować
- łapać
- w końcu
- rzucać
Python Wypróbuj instrukcję
Instrukcja try zawiera słowo kluczowe try, po którym następuje dwukropek (:) i zestaw kodu, w którym mogą wystąpić wyjątki. Zawiera jedną lub więcej klauzul.
Jeśli podczas wykonywania instrukcji try nie wystąpiły żadne wyjątki, interpreter ignoruje procedury obsługi wyjątków dla tej konkretnej instrukcji try.
W przypadku wystąpienia wyjątku w zestawie prób, zestaw prób wygasa, a kontrola programu jest przekazywana do odpowiedniego programu obsługi wyjątków następującego po zestawie prób.
Syntax: try: statement(s)
Oświadczenie catch
Bloki catch pobierają po jednym argumencie na raz i jest to typ wyjątku, który prawdopodobnie przechwyci. Argumenty te mogą obejmować konkretny typ wyjątku, który można zmieniać, aż do kategorii wyjątków typu catch-all.
Zasady bloku catch:
- Blok catch można zdefiniować za pomocą słowa kluczowego catch
- Parametr wyjątku catch jest zawsze ujęty w nawiasy
- Zawsze reprezentuje typ wyjątku obsługiwany przez blok catch.
- Kod obsługi wyjątku jest zapisany pomiędzy dwoma nawiasami klamrowymi {}.
- Możesz umieścić wiele bloków catch w jednym bloku try.
- Bloku catch można użyć dopiero po bloku try.
- Cały blok catch powinien być uporządkowany od podklasy do wyjątku nadklasy.
Przykład:
try } catch (ArrayIndexOutOfBoundsException e) { System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) { System.err.printin("Caught second " + e.getMessage()); }
Wreszcie oświadczenie w Python
Wreszcie blok zawsze jest wykonywany niezależnie od tego, czy został zgłoszony wyjątek, czy nie. Słowo kluczowe final umożliwia utworzenie bloku kodu następującego po bloku try-catch.
Wreszcie klauzula jest opcjonalna. Ma na celu zdefiniowanie działań porządkowych, które powinny być wykonywane w każdych warunkach.
try: raise KeyboardInterrupt finally: print 'welcome, world!' Output Welcome, world! KeyboardInterrupt
Na koniec klauzula jest wykonywana przed instrukcją try.
Podnieś oświadczenie w Python
Instrukcja raise określa argument, który inicjuje obiekt wyjątku. W tym przypadku po nazwie wyjątku i argumencie lub krotce argumentu następuje przecinek.
Składnia:
raise [Exception [, args [, traceback]]]
W tej składni argument jest opcjonalny i w momencie wykonania wartością argumentu wyjątku jest zawsze brak.
Przykład:
A Python wyjątek może być dowolną wartością, np. ciągiem znaków, klasą, liczbą lub obiektem. Większość z tych wyjątków zgłaszanych przez Python core to klasy z argumentem będącym instancją klasy.
Ważny Python Błędy
Typ błędu | Opis |
---|---|
Błąd arytmetyczny | ArithmeticError działa jako klasa bazowa dla wszystkich wyjątków arytmetycznych. Jest wywoływany w przypadku błędów w operacjach arytmetycznych. |
Błąd importu | ImportError pojawia się, gdy próbujesz zaimportować moduł, który nie jest obecny. Ten rodzaj wyjątku ma miejsce, jeśli popełniłeś błąd w nazwie modułu lub w przypadku modułu, którego nie ma w standardowej ścieżce. |
Błąd indeksu | IndexErroris zgłaszany podczas próby odniesienia się do sekwencji, która jest poza zakresem. |
Błąd klucza | Jeśli w słowniku nie zostanie znaleziony określony klucz, zgłaszany jest wyjątek KeyError. |
NazwaBłąd | Błąd NameError jest wywoływany, gdy odwołuje się do nazwy w kodzie, który nigdy nie istnieje w lokalnej lub globalnej przestrzeni nazw. |
Błąd wartości | Błąd wartości jest zgłaszany, gdy funkcja lub wbudowana operacja otrzyma argument, który może być poprawnego typu, ale nie ma odpowiedniej wartości. |
Błąd EO | Ten rodzaj błędu pojawia się, gdy jedna z wbudowanych funkcji (input() lub raw_input()) osiąga warunek EOF bez odczytywania jakichkolwiek danych. |
Błąd ZeroDivison | Ten typ błędu pojawia się podczas dzielenia lub modułu przez zero dla wszystkich typów liczbowych. |
Błąd IO- | Ten rodzaj błędu pojawia się, gdy operacja wejścia/wyjścia się nie powiedzie. |
błąd składni | SyntaxErrors zgłaszane w przypadku wystąpienia błędu Python składnia. |
Błąd identyfikacyjny | Ten błąd pojawia się, gdy wcięcie nie jest poprawnie zdefiniowane |
Inne ważne Python wyjątki
Wyjątek | Opis |
---|---|
Wyjątek arytmetyczny | Błąd arytmetyczny, taki jak dzielenie przez zero. |
Wyjątek ArraylndexOutOfBounds | Indeks tablicy jest poza zakresem. |
Wyjątek ArrayStore | Przypisanie pomaga w dotarciu do elementu tablicy niezgodnego typu. |
Wyjątek ClassCast | Nieprawidłowa obsada |
Wyjątek MlegalMonitorStateException | Nielegalna operacja monitora, np. oczekiwanie na odblokowany wątek. |
Wyjątek MlegalState | Środowisko lub aplikacja jest w złym stanie. |
Klasa nie znaleziono wyjątku | Nie znaleziono klasy. |
CloneNotSupportedException | Próba sklonowania obiektu, który nie implementuje interfejsu Cloneable. |
Wyjątek dotyczący nielegalnego dostępu | Odmowa dostępu do zajęć. |
Wyjątek wystąpienia | Występuje podczas próby utworzenia obiektu interfejsu lub klasy abstrakcyjnej. |
CloneNotSupportedException | Próba sklonowania obiektu, który nie implementuje interfejsu. |
Błąd a wyjątki
Błąd | wyjątki |
---|---|
Wszystkie błędy w Python są typem niesprawdzonym. | Wyjątki obejmują zarówno typy zaznaczone, jak i niesprawdzone. |
W czasie wykonywania występują błędy nieznane kompilatorowi. | Wyjątki można odzyskać, obsługując je za pomocą bloków try-catch. |
Błędy są najczęściej spowodowane przez środowisko, w którym działa aplikacja. | Sama aplikacja powoduje wyjątki. |
Przykłady: Błąd brak pamięci |
Przykłady: Sprawdzone wyjątki, wyjątek SQL, wyjątek NullPointerException itp. |
Podsumowanie
- Wyjątek stanowi błąd, który wystąpił podczas wykonywania programu.
- Wyjątek wskazuje, że chociaż zdarzenie może wystąpić, tego typu zdarzenie zdarza się rzadko.
- Typowymi przykładami wyjątków są: 1) dzielenie przez zero, 2) dostęp do pliku, który nie istnieje, 3) dodanie dwóch niezgodnych typów.
- Wyjątkiem jest plik Python obiekt, który reprezentuje błąd.
- Instrukcja try zawiera słowo kluczowe try, po którym następuje dwukropek (:) i zestaw kodu, w którym mogą wystąpić wyjątki. Zawiera jedną lub więcej klauzul.
- Bloki catch pobierają po jednym argumencie na raz i jest to typ wyjątku, który prawdopodobnie przechwyci.
- Instrukcja raise określa argument, który inicjuje obiekt wyjątku.
- Wreszcie blok zawsze jest wykonywany niezależnie od tego, czy został zgłoszony wyjątek, czy nie.