jak najlepiej używać Try Except in Python-szczególnie dla początkujących
w programowaniu w Pythonie obsługa wyjątków pozwala programiście włączyć kontrolę przepływu. I nie ma. wbudowanych WYJĄTKÓW do wyłapywania błędów w przypadku złamania kodu. Używanie try-except jest najczęstszym i naturalnym sposobem obsługi nieoczekiwanych błędów wraz z wieloma innymi konstrukcjami obsługi wyjątków. W tym samouczku poznasz niektóre z najlepszych technik do użycia try-z wyjątkiem Pythona.
Obsługa błędów lub Obsługa wyjątków w Pythonie może być wymuszona przez ustawienie WYJĄTKÓW. Za pomocą bloku try można zaimplementować wyjątek i obsłużyć błąd wewnątrz bloku except. Za każdym razem, gdy kod zostanie przerwany wewnątrz bloku try, regularny przepływ kodu zatrzyma się, a sterowanie zostanie przełączone na blok except w celu obsługi błędu.
również przeczytaj – Naucz się obsługi wyjątków Pythona od zera.
Dlaczego warto używać klauzuli Try-Except/Try-Except-else? Z pomocą try-except I try-except-else możesz uniknąć wielu nieznanych problemów, które mogą wyniknąć z twojego kodu. Na przykład, kod Pythona używający stylu LBYL (Look before you leap) może prowadzić do warunków wyścigowych. Tutaj Klauzula try-except może przyjść ci na ratunek. Ponadto, istnieją przypadki, w których kod zależy krytycznie od niektórych informacji, które mogą stać się nieaktualne do czasu otrzymania go. Na przykład, kod wykonywanie połączeń do systemu operacyjnego.ścieżka.istnieje lub Kolejka.Funkcja full może zawieść, ponieważ funkcje te mogą zwracać dane, które stają się przestarzałe w czasie korzystania z niej. Mądrzejszym wyborem byłoby podążanie za stylem try-except-else w kodzie, aby lepiej zarządzać powyższymi przypadkami.
Tworzenie wyjątków jest również dopuszczalne w Pythonie. Oznacza to, że możesz rzucić lub podnieść wyjątek, kiedy tylko jest to potrzebne. Możesz to zrobić po prostu dzwoniąc z kodu. Po przebiciu, wyjątek zatrzyma bieżące wykonanie jak zwykle i pójdzie dalej w górę w stosie wywołań, aż do rozpatrzenia.
Po co używać WYJĄTKÓW? Nie tylko pomagają rozwiązywać popularne problemy, takie jak warunki wyścigu, ale są również bardzo przydatne w kontrolowaniu błędów w obszarach takich jak pętle, obsługa plików, komunikacja z bazami danych, dostęp do sieci i tak dalej.
dlatego w tym poście omówimy szersze problemy i przedstawimy rozwiązania. Pamiętaj, że obsługa wyjątków to sztuka, która daje Ci ogromne możliwości pisania solidnego i wysokiej jakości kodu. Przygotuj się więc na przeczytanie kilku uwag na temat WYJĄTKÓW wraz z najlepszymi sposobami ich obsługi.
Must Read – wszystko, co powinieneś wiedzieć o pliku kopiującym w Pythonie .
Python: Wskazówki dotyczące używania Try-Except, Try-Except-Else i innych
- jak najlepiej używać try-Except w Pythonie
- obsługa dowolnego wyjątku
- Przechwytywanie wielu WYJĄTKÓW w jednym z wyjątkiem bloku
- obsługa wielu WYJĄTKÓW z jednym wyjątkiem bloku
- ponowne podnoszenie wyjątków w Pythonie
- kiedy użyć klauzuli else
- użyj
- użyj słowa kluczowego as, aby złapać określone typy WYJĄTKÓW
- najlepsza praktyka ręcznego podnoszenia wyjątki
- jak pominąć błędy i kontynuować wykonywanie
- najczęstsze błędy WYJĄTKÓW w Pythonie
- przykłady najczęstszych WYJĄTKÓW w Pythonie
1. Jak obsługiwać dowolny wyjątek
czasami może być potrzebny sposób, aby zezwolić na dowolny wyjątek, a także chcesz być w stanie wyświetlić komunikat o błędzie lub wyjątku.
jest to łatwe do osiągnięcia przy użyciu WYJĄTKÓW Pythona. Sprawdź poniższy kod. Podczas testowania możesz umieścić kod wewnątrz bloku try w poniższym przykładzie.
try: #your codeexcept Exception as ex: print(ex)
powrót na górę
2. Przechwytywanie wielu WYJĄTKÓW w jednym bloku except
możesz przechwytywać wiele wyjątków w jednym bloku except. Zobacz poniższy przykład.
except (Exception1, Exception2) as e: pass
pamiętaj, że możesz oddzielić wyjątki od zmiennej przecinkiem, który ma zastosowanie w Pythonie 2.6 / 2.7. Ale nie możesz tego zrobić w Pythonie 3. Tak więc powinieneś preferować użycie słowa kluczowego.
powrót na górę
3. Obsługa wielu WYJĄTKÓW z jednym blokiem except
istnieje wiele sposobów obsługi wielu WYJĄTKÓW. Pierwszy z nich wymaga umieszczenia wszystkich wyjątków, które mogą wystąpić w formie krotki. Proszę zobaczyć od dołu.
try: file = open('input-file', 'open mode')except (IOError, EOFError) as e: print("Testing multiple exceptions. {}".format(e.args))
następną metodą jest obsługa każdego wyjątku w dedykowanym bloku except. Możesz dodać tyle bloków oprócz, ile potrzeba. Zobacz poniższy przykład.
try: file = open('input-file', 'open mode')except EOFError as ex: print("Caught the EOF error.") raise exexcept IOError as e: print("Caught the I/O error.") raise ex
ostatnim, ale nie najmniej ważnym, jest użycie wyjątku bez wymieniania atrybutu wyjątku.
try: file = open('input-file', 'open mode')except: # In case of any unhandled error, throw it away raise
ta metoda może być przydatna, jeśli nie masz pojęcia o wyjątku, który może zostać rzucony przez twój program.
powrót na górę
4. Ponowne podnoszenie WYJĄTKÓW w Pythonie
wyjątki raz podniesione przesuwają się do metod wywołujących, dopóki nie zostaną obsłużone. Chociaż możesz dodać klauzulę except, która może mieć wywołanie bez żadnego argumentu. Spowoduje to przekierowanie wyjątku.
zobacz poniższy przykładowy kod.
try: # Intentionally raise an exception. raise Exception('I learn Python!')except: print("Entered in except.") # Re-raise the exception. raise
wyjście:
Entered in except.Traceback (most recent call last): File "python", line 3, in <module>Exception: I learn Python!
powrót do góry
5. Kiedy użyć klauzuli else
użyj klauzuli else zaraz po bloku try-except. Klauzula else zostanie trafiona tylko wtedy, gdy nie zostanie wyrzucony żaden wyjątek. Polecenie else powinno zawsze poprzedzać bloki except.
w blokach else możesz dodać kod, który chcesz uruchomić, gdy nie wystąpiły błędy.
zobacz poniższy przykład. W tej próbce można zobaczyć pętlę while biegnącą w nieskończoność. Kod prosi o wprowadzenie użytkownika, a następnie analizuje go za pomocą wbudowanej funkcji. Jeśli użytkownik wprowadzi wartość zerową, blok except zostanie trafiony. W przeciwnym razie kod będzie przepływał przez blok else.
while True: # Enter integer value from the console. x = int(input()) # Divide 1 by x to test error cases try: result = 1 / x except: print("Error case") exit(0) else: print("Pass case") exit(1)
powrót na górę
6. Użyj
Jeśli masz kod, który chcesz uruchomić w każdej sytuacji, to napisz go wewnątrz . Python zawsze będzie uruchamiał instrukcje zakodowane w . Jest to najczęstszy sposób wykonywania zadań sprzątania. Możesz również upewnić się, że sprzątanie przejdzie.
błąd jest przechwytywany przez klauzulę try. Po wykonaniu kodu w bloku except uruchamiane będą instrukcje w bloku except.
pamiętaj, że a zawsze będzie działać, nawet jeśli powrócisz przed nim.
zobacz poniższy przykład.
try: # Intentionally raise an error. x = 1 / 0except: # Except clause: print("Error occurred")finally: # Finally clause: print("The is hit")
wyjście:
Error occurredThe is hit
powrót na górę
7. Użyj słowa kluczowego As, aby złapać określone typy WYJĄTKÓW
za pomocą as <identyfikator>, możesz utworzyć nowy obiekt. Możesz także użyć obiektu wyjątku. W poniższym przykładzie tworzymy obiekt IOError, a następnie używamy go w klauzuli.
try: # Intentionally raise an error. f = open("no-file")except IOError as err: # Creating IOError instance for book keeping. print("Error:", err) print("Code:", err.errno)
wyjście:
('Error:', IOError(2, 'No such file or directory'))('Code:', 2)
powrót do góry
8. Najlepsza praktyka ręcznego podnoszenia WYJĄTKÓW
unikaj podnoszenia ogólnych wyjątków, ponieważ jeśli to zrobisz, wszystkie inne, bardziej szczegółowe wyjątki muszą zostać również złapane. Dlatego najlepszą praktyką jest podniesienie najbardziej konkretnego wyjątku blisko Twojego problemu.
zły przykład.
def bad_exception(): try: raise ValueError('Intentional - do not want this to get caught') raise Exception('Exception to be handled') except Exception as error: print('Inside the except block: ' + repr(error)) bad_exception()
Wyjście:
Inside the except block: ValueError('Intentional - do not want this to get caught',)
najlepsza praktyka:
tutaj tworzymy określony typ wyjątku, a nie ogólny. Używamy również opcji args, aby wypisać nieprawidłowe argumenty, jeśli takie istnieją. Zobaczmy poniższy przykład.
try: raise ValueError('Testing exceptions: The input is in incorrect order', 'one', 'two', 'four') except ValueError as err: print(err.args)
Wyjście:
('Testing exceptions: The input is in incorrect order', 'one', 'two', 'four')
powrót do góry
9. Jak pominąć błędy i kontynuować wykonywanie
idealnie, nie powinieneś tego robić. Ale jeśli nadal chcesz to zrobić, Postępuj zgodnie z poniższym kodem, aby sprawdzić właściwe podejście.
try: assert Falseexcept AssertionError: passprint('Welcome to Prometheus!!!')
wyjście:
Welcome to Prometheus!!!
powrót do góry
teraz, spójrz na niektóre z najczęstszych WYJĄTKÓW Pythona i ich przykłady.
najczęstsze błędy WYJĄTKÓW
- IOError – występuje w przypadku błędów, takich jak błąd otwierania pliku.
- ImportError – jeśli moduł Pythona nie może być załadowany lub zlokalizowany.
- ValueError-występuje, gdy funkcja otrzymuje argument właściwego typu, ale nieodpowiednią wartość.
- KeyboardInterrupt – zostanie trafiony, gdy użytkownik wprowadzi klawisz przerwania (tj. klawisz Control-C lub Del)
- EOFError – zostanie wywołany, jeśli funkcje wejściowe (input () / raw_input()) osiągną warunek końca pliku (EOF), ale bez odczytu danych.
powrót do góry
przykłady najczęstszych WYJĄTKÓW
except IOError:print('Error occurred while opening the file.')except ValueError:print('Non-numeric input detected.')except ImportError:print('Unable to locate the module.')except EOFError:print('Identified EOF error.')except KeyboardInterrupt:print('Wrong keyboard input.')except:print('An error occurred.')
powrót do góry
podsumowanie – jak najlepiej używać Try-z wyjątkiem Pythona
podczas programowania błędy są na pewno zdarzają się. To fakt, którego nikt nie może zignorować. I może być wiele przyczyn błędów, takich jak złe wejście użytkownika, niewystarczające uprawnienia do plików, niedostępność zasobów sieciowych, niewystarczająca pamięć lub najprawdopodobniej błąd programisty.
tak czy inaczej, wszystko to może być obsługiwane, jeśli twój kod używa obsługi wyjątków i zaimplementuje go z konstrukcjami takimi jak try-except, lub tr-except-else, try-except-finally. Mam nadzieję, że spodobałoby ci się przeczytanie powyższego samouczka.
Jeśli podobał Ci się ten post, nie przegap go i podziel się nim z przyjaciółmi oraz w mediach społecznościowych (facebook/twitter).
Best,
TechBeamers.