Obsługa wyjątków w Pythonie

Obsługa wyjątków w Pythonie
Kiedy uruchamiamy dowolny kod zawierający błąd, błąd wyświetla się w wyjściu, zatrzymując wykonanie programu. Niektóre błędy mogą nie zostać rozpoznane przez użytkowników i stworzyć dla nich niepożądaną sytuację. Ale jeśli błąd można wyświetlić w zrozumiałym formacie dla użytkowników, łatwo jest im poznać przyczynę błędu. W każdym programowaniu obiektowym, próbuj złapać Lub próbuj-przyczep Blok służy do obsługi błędów i wyświetlania ich w czytelnym formacie, który nazywa się obsługą wyjątków. W tym samouczku można wykonać obsługę wyjątków w skrypcie Python.

Składnia:

próbować:
blok…
Z wyjątkiem wyjątku:
treser…
w przeciwnym razie:
blok…
Wreszcie:
blok…

Tutaj, jeśli wystąpi jakikolwiek błąd podczas wykonywania instrukcji próbować blok, a następnie zostanie wygenerowany wyjątek i wyrzuci błąd do odpowiedniego z wyjątkiem treser. Wiele błędów można wygenerować w jednym próbować blokuj, a następnie musisz napisać wiele z wyjątkiem Handlery. Oświadczenia w przeciwnym razie blok zostanie wykonany, jeśli nie wystąpi błąd w próbować blok. Oświadczenia Wreszcie blok zostanie wykonany, jeśli wystąpi jakikolwiek błąd. Do obsługi wyjątków, używając w przeciwnym razie I Wreszcie Bloki nie są niezbędne. Różne rodzaje obsługi wyjątków w Pythonie są wyjaśnione w następnej części samouczka.

Przykład-1: Zastosowanie pojedynczego bloku próbnego w celu sprawdzenia walidacji danych numerycznych:

Ten przykład pokazuje bardzo proste użycie obsługi wyjątków w Pythonie. w próbować blok, dwa wejścia zostaną pobrane od użytkownika, jeden to wartość ciągu, a druga jest wartością liczbową. Jeśli użytkownik wpisuje dowolną wartość ciągu zamiast wartości liczbowej dla drugiego wejścia, wówczas, ValueerRor wyjątek zostanie wygenerowany przez Python3 a niestandardowy komunikat o błędzie będzie wyświetlany z z wyjątkiem blok.

#!/usr/bin/env python3
# Zdefiniuj blok próbny
próbować:
# Weź dowolne dane jako ciąg
name = input („Wprowadź swoje imię: \ n”)
# Weź dowolne dane numeryczne
wiek = int (input („Wprowadź swój wiek: \ n”))
# Wydrukuj sformatowane dane z nazwą i wiekiem
Drukuj („Witaj %s, masz %s." %(imię Wiek))
# Obsługuj błędy wejściowe
Z wyjątkiem (valueerror):
# Wydrukuj niestandardowy komunikat o błędzie
Drukuj („Niewłaściwe wejście! Musisz wpisać liczbę w swoim wieku.")

Wyjście:

Skrypt jest wykonywany dwa razy w następującym wyjściu z niewłaściwym wejściem i poprawem wejścia. Po raz pierwszy, kiedy użytkownik typu ”Trzydzieści jeden' jako wartość wieku dla drugiego wejścia, które przyjmuje wartość liczbową, a następnie a ValueerRor jest generowany, a komunikat o błędzie jest wyświetlany z bloku oprócz. Po raz drugi nie jest generowany błędów dla prawidłowych wartości wejściowych.

Przykład-2: użycie wielu z wyjątkiem bloku do obsługi wielu błędów:

Jak możesz użyć wielu, z wyjątkiem bloku do obsługi wielu błędów, jest pokazany w tym przykładzie. W tym skrypcie będą obsługiwane dwa rodzaje błędów. Nazwa pliku jest podejmowana jako dane wejściowe użytkownika do odczytu. Jeśli plik nie istnieje, wygeneruje Ioerror Wyjątek, a jeśli plik istnieje, ale pusty, wówczas podniesie niestandardowy wyjątek. W tym celu w tym skrypcie używane są dwa z wyjątkiem bloków. Gdy wystąpi żaden z błędów, zostanie wyświetlona zawartość pliku.

#!/usr/bin/env python3
# Importuj moduł OS
Import OS
# Zdefiniuj blok próbny
próbować:
# Weź nazwę pliku jako dane wejściowe
filename = input („wprowadź nazwę pliku \ n ')
# Otwórz plik do odczytu
file_handler = Open (nazwa pliku)
# Ustaw Ponter Seek od 0 na koniec pliku
FILE_HANDLER.szukaj (0, OS.Seek_end)
# Przeczytaj rozmiar pliku w bajtach
size = file_handler.powiedzieć()
# Wydrukuj zawartość pliku i liczbę znaków pliku
if (rozmiar> 0):
# Ustaw Ponter na początek pliku
FILE_HANDLER.szukaj (0)
# Przeczytaj i przechowuj zawartość pliku w zmiennej
file_content = file_handler.Czytać()
wydrukuj („\ n zawartość pliku podanego poniżej \ n”)
print (file_content)
Drukuj („Rozmiar pliku to %d bajty” %rozmiar)
w przeciwnym razie:
# Podnieś wyjątek, jeśli plik jest pusty
Podnieś wyjątek („Plik nie ma treści.')
# Wydrukuj komunikat o błędzie, jeśli plik nie istnieje
z wyjątkiem IoEerror jako błąd:
Drukuj (błąd)
# Wydrukuj komunikat o błędzie, jeśli plik jest pusty
z wyjątkiem wyjątku jako E:
Drukuj („Błąd: %s ' %e)
# Wydrukuj wiadomość, jeśli nie ma błędu
w przeciwnym razie:
Drukuj („nie występuje błąd”)

Wyjście:

Skrypt jest wykonywany trzy razy. Po raz pierwszy podano nazwę pliku, która nie istnieje, a wyjście pokazuje komunikat IOERROR. Po raz drugi podano nazwę pliku, która istnieje, ale nie ma treści, a wyjście pokazuje niestandardowy komunikat. Po raz trzeci podano nazwę pliku, która istnieje i zawiera tekst. Dane wyjściowe pokazuje zawartość pliku.

Przykład-3: Zastosowanie bloków próbnych do obsługi błędu podziału

Przykład pokazuje użycie bloku z wyjątkiem, aby obsłużyć błąd podziału. Dwie wartości liczbowe zostaną przyjęte jako wejście i podzielone pierwsze wejście przez drugie wejście w bloku try. Tutaj mogą wystąpić dwa rodzaje błędów. Jeden jest ValueerRor Kiedy użytkownik wpisuje dowolną wartość bez liczby, a druga jest ZerodivisionError Kiedy użytkownik weźmie 0 Jako drugie wejście.

#!/usr/bin/env python3
# Zdefiniuj blok próbny
próbować:
# Wprowadź dwie liczby pływaków
n1 = float (input ('wprowadź liczbę \ n'))
n2 = float (input ('wprowadź liczbę \ n'))
# Podziel te liczby
Division = n1 / n2
# Obsługuj błędy
Z wyjątkiem (ZerodivisionError, ValueSerror):
druk („podzielony przez błąd zerowy lub wartość nie jest liczbą”)
# Wydrukuj komunikat, jeśli nie wystąpi błąd
w przeciwnym razie:
Drukuj („Rezultatem podziału jest %F” %Division)
# Wydrukuj komunikat, jeśli wystąpi błąd lub nie
Wreszcie:
Drukuj („koniec”)

Wyjście:

Tutaj skrypt jest uruchamiany dwa razy z zarówno poprawnymi wejściami, jak i drugim wejściem jako 0. Tak więc wyjątek po raz drugi jest generowany i wyświetla komunikat o błędzie.

Wniosek:

Ten samouczek pokazuje podstawowy proces obsługi wyjątków w Python3 dla nowych użytkowników Pythona. Czytelnicy będą mogli zrozumieć, co jest obsługą wyjątków i jak zastosować w skrypcie Python po ćwiczeniu powyższych przykładów.