Co to jest wyjątek w Pythonie?
Wyjątkiem jest błąd, który występuje w czasie wykonywania programu. Jednak podczas uruchamiania programu Python generuje wyjątek, który należy obsłużyć, aby uniknąć awarii programu. W języku Python 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 wyjątek jest wyrzucany z funkcji głównej, program jest nagle przerywany.
Z tego wyjątkowego samouczka obsługi Pythona dowiesz się:
- Co to jest wyjątek w Pythonie?
- Typowe przykłady wyjątków
- Dlaczego warto używać wyjątków?
- Zasady wyjątków
- Wyjątkowy mechanizm obsługi
- Instrukcja Try
- Instrukcja catch
- Oświadczenie Raise
- Ważne błędy w języku Python
- Inne ważne wyjątki w Pythonie
- Błąd a wyjątki
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 na kwotę większą niż dostępna
Dlaczego warto używać wyjątków?
Oto powody używania wyjątków w Pythonie:
- Obsługa wyjątków umożliwia oddzielenie kodu obsługi błędów od normalnego kodu.
- Wyjątkiem jest obiekt Pythona, który reprezentuje błąd.
- Podobnie jak w przypadku komentarzy do kodu, wyjątki pomagają przypomnieć sobie, czego oczekuje program.
- Wyjaśnia kod i poprawia 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.
- W Pythonie można zgłosić wyjątek w programie za pomocą metody podnieś wyjątek.
- Podniesienie wyjątku pomaga przerwać wykonywanie bieżącego kodu i zwraca wyjątek z powrotem do oczekiwanego, dopóki nie zostanie obsłużony.
- Przetwarzanie wyjątków dla składników, które nie obsługują ich bezpośrednio.
Zasady wyjątków
Oto kilka podstawowych zasad obsługi wyjątków w Pythonie:
- Wyjątki muszą być obiektami klas
- W przypadku wyjątków klas można użyć instrukcji try z klauzulą except, która wspomina o określonej klasie.
- Nawet jeśli instrukcja lub wyrażenie jest poprawne składniowo, może wyświetlić błąd podczas próby wykonania go.
- Błędy znalezione podczas wykonywania nazywane są wyjątkami i nie są bezwarunkowo krytyczne.
Wyjątkowy mechanizm obsługi
Obsługą wyjątków zarządza 5 następujących słów kluczowych:
- próbować
- złapać
- Wreszcie
- rzucać
Instrukcja Try
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, gdy w zestawie try wystąpi jakikolwiek wyjątek, pakiet try wygasa, a kontrola programu jest przenoszona do pasującego programu obsługi z wyjątkiem następującego po pakiecie try.
Syntax:try:statement(s)
Instrukcja catch
Bloki przechwytywania przyjmują jeden argument na raz, co jest typem wyjątku, który prawdopodobnie przechwyci. Argumenty te mogą wahać się od określonego typu wyjątku, który można zmienić, do kategorii wyjątków typu catch-all.
Zasady dotyczące bloku catch:
- Możesz zdefiniować blok catch, używając słowa kluczowego catch
- Parametr Catch Exception jest zawsze ujęty w nawiasach
- Zawsze reprezentuje typ wyjątku, który obsługuje uchwyty bloków catch.
- Kod obsługi wyjątków jest zapisywany między dwoma nawiasami klamrowymi {}.
- W jednym bloku try można umieścić wiele bloków catch.
- Możesz użyć bloku catch tylko 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 Block
Ostatecznie blok jest zawsze wykonywany niezależnie od tego, czy wyjątek został zgłoszony, czy nie. Ostatnie słowo kluczowe umożliwia utworzenie bloku kodu, który następuje po bloku try-catch.
Wreszcie klauzula jest opcjonalna. Jego celem jest zdefiniowanie działań czyszczących, które powinny być wykonywane w każdych warunkach.
try:raise KeyboardInterruptfinally:print 'welcome, world!'OutputWelcome, world!KeyboardInterrupt
Na koniec klauzula jest wykonywana przed instrukcją try.
Oświadczenie Raise
Instrukcja raise określa argument, który inicjuje obiekt wyjątku. W tym przypadku przecinek następuje po nazwie wyjątku i argumentu lub krotce argumentu, który następuje po przecinku.
Składnia:
raise [Exception [, args [, traceback]]]
W tej składni argument jest opcjonalny, aw momencie wykonywania wartość argumentu wyjątku zawsze wynosi brak.
Przykład:
Wyjątkiem Pythona może być dowolna wartość, taka jak łańcuch, klasa, liczba lub obiekt. Większość z tych wyjątków, które są zgłaszane przez rdzeń Pythona, to klasy z argumentem będącym instancją klasy.
Ważne błędy w języku Python
Typ błędu | Opis |
ArithmeticError | ArithmeticError działa jako klasa bazowa dla wszystkich wyjątków arytmetycznych. Jest podnoszony w przypadku błędów w operacjach arytmetycznych. |
ImportError | ImportError jest wywoływany, gdy próbujesz zaimportować moduł, który nie jest obecny. Ten rodzaj wyjątku występuje, jeśli popełnisz błąd podczas wpisywania nazwy modułu lub modułu, którego nie ma w standardowej ścieżce. |
IndexError | Błąd IndexError jest wywoływany, gdy próbujesz odwołać się do sekwencji, która jest poza zakresem. |
KeyError | Gdy określony klucz nie zostanie znaleziony w słowniku, zgłaszany jest wyjątek KeyError. |
NameError | NameError jest generowany, gdy odwołuje się do nazwy w kodzie, który nigdy nie istnieje w lokalnej lub globalnej przestrzeni nazw. |
ValueError | Błąd wartości jest zgłaszany, gdy funkcja lub operacja wbudowana otrzymuje argument, który może być poprawnego typu, ale nie ma odpowiedniej wartości. |
EOFerror | Ten rodzaj błędu pojawia się, gdy jedna z funkcji wbudowanych (input () lub raw_input ()) osiąga stan EOF bez odczytu danych. |
ZeroDivisonError | Ten typ błędu jest zgłaszany, gdy dzielenie lub moduł przez zero ma miejsce dla wszystkich typów liczbowych. |
IOError- | Ten rodzaj błędu jest zgłaszany, gdy operacja wejścia / wyjścia nie powiedzie się. |
błąd składni | SyntaxErrors zgłaszane, gdy wystąpi błąd w składni Pythona. |
IndentationError | Ten błąd jest zgłaszany, gdy wcięcie nie jest poprawnie zdefiniowane |
Inne ważne wyjątki w Pythonie
Wyjątek | Opis |
ArithmeticException | Błąd arytmetyczny, taki jak dzielenie przez zero. |
ArraylndexOutOfBoundsException | Indeks tablicy jest poza zakresem. |
ArrayStoreException | Przypisanie pomaga w elemencie tablicy o niezgodnym typie. |
ClassCastException | Nieprawidłowa obsada |
MlegalMonitorStateException | Niedozwolona operacja monitora, taka jak czekanie na odblokowany wątek. |
MlegalStateException | Środowisko lub aplikacja jest w złym stanie. |
Klasa nie znaleziono wyjątku | Nie znaleziono klasy. |
CloneNotSupportedException | Podjęto próbę sklonowania obiektu, który nie implementuje interfejsu Cloneable. |
Niedozwolony wyjątek AccessException | Odmowa dostępu do zajęć. |
InstantiationException | Występuje podczas próby utworzenia obiektu interfejsu lub klasy abstrakcyjnej. |
CloneNotSupportedException | Spróbuj sklonować obiekt, który nie implementuje interfejsu. |
Błąd a wyjątki
Błąd | Wyjątki |
Wszystkie błędy w Pythonie są niezaznaczone. | Wyjątki obejmują zarówno zaznaczony, jak i niezaznaczony typ. |
Błędy występują w czasie wykonywania, które są nieznane kompilatorowi. | Wyjątki można odzyskać, obsługując je za pomocą bloków try-catch. |
Błędy są najczęściej powodowane przez środowisko, w którym działa aplikacja. | Sama aplikacja powoduje wyjątki. |
Przykłady: OutofMemoryError | Przykłady: zaznaczone wyjątki, wyjątek SQL, wyjątek NullPointerException itp. |
Podsumowanie
- Wyjątkiem jest 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.
- Typowe przykłady wyjątków to 1) dzielenie przez zero, 2) dostęp do pliku, który nie istnieje, 3) dodanie dwóch niekompatybilnych typów.
- Wyjątkiem jest obiekt Pythona, 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 przechwytywania przyjmują jeden argument na raz, co jest typem wyjątku, który prawdopodobnie przechwyci.
- Instrukcja raise określa argument, który inicjuje obiekt wyjątku.
- Na koniec blok zawsze jest wykonywany bez względu na zgłoszony wyjątek, czy nie.