Wyjątek to nieoczekiwane zdarzenie, które ma miejsce podczas wykonywania programu. Znany jest również jako błąd czasu działania . Gdy wystąpi ten błąd, Pyton generuje wyjątek podczas wykonywania, który można obsłużyć, co zapobiega przerywaniu programu.
Przykład: W tym kodzie system nie może podzielić liczby przez zero, dlatego zgłaszany jest wyjątek.
Python3
a>=> 5> b>=> 0> print>(a>/>b)> |
>
>
Wyjście
Traceback (most recent call last): File '/home/8a10be6ca075391a8b174e0987a3e7f5.py', line 3, in print(a/b) ZeroDivisionError: division by zero>
Obsługa wyjątków za pomocą try, z wyjątkiem, else i wreszcie
- Próbować : Ten blok sprawdza, czy wystąpi wyjątek
- Z wyjątkiem : Tutaj możesz poradzić sobie z błędem
- W przeciwnym razie : Jeśli nie ma wyjątku, ten blok zostanie wykonany
- Wreszcie : Na koniec blok zawsze jest wykonywany, niezależnie od tego, czy zostanie wygenerowany wyjątek, czy nie
Python Spróbuj, z wyjątkiem, w przeciwnym razie i na koniec Składnia
try: # Some Code.... except: # optional block # Handling of exception (if required) else: # execute if no exception finally: # Some code .....(always executed)>
Praca „ próbować' I 'z wyjątkiem'
Najpierw zrozummy, jak Python spróbuj i wyjątek Pracuje
- Pierwszy próbować wykonywana jest klauzula, tj. kod pomiędzy próbować I z wyjątkiem klauzula.
- Jeśli nie ma wyjątku, to tylko próbować klauzula zostanie uruchomiona, z wyjątkiem klauzula nie zostanie wykonana.
- Jeśli wystąpi jakikolwiek wyjątek, plik próbować klauzula zostanie pominięta i z wyjątkiem klauzula zostanie uruchomiona.
- Jeśli wystąpi jakikolwiek wyjątek, ale z wyjątkiem klauzula w kodzie nie obsługuje tego, jest przekazywana do zewnętrznej próbować sprawozdania. Jeśli wyjątek pozostanie nieobsługiwany, wykonanie zostanie zatrzymane.
- A próbować instrukcja może mieć więcej niż jeden z wyjątkiem klauzula.
Przykład: Spróbujmy przyjąć liczbę całkowitą użytkownika i zgłosić wyjątek w bloku z wyjątkiem.
Python3
ramy wiosenne
# Python code to illustrate working of try()> def> divide(x, y):> >try>:> ># Floor Division : Gives only Fractional> ># Part as Answer> >result>=> x>/>/> y> >print>(>'Yeah ! Your answer is :'>, result)> >except> ZeroDivisionError:> >print>(>'Sorry ! You are dividing by zero '>)> > # Look at parameters and note the working of Program> divide(>3>,>2>)> divide(>3>,>0>)> |
>
>
Wyjście:
Yeah ! Your answer is : 1 Sorry ! You are dividing by zero>
Złap wiele wyjątków w Pythonie
Oto przykład pokazujący, jak używać wielu klauzul z wyjątkiem do obsługi różnych wyjątków:
Python3
try>:> >x>=> int>(>input>(>'Enter a number: '>))> >result>=> 10> /> x> except> ZeroDivisionError:> >print>(>'You cannot divide by zero.'>)> except> ValueError:> >print>(>'Invalid input. Please enter a valid number.'>)> except> Exception as e:> >print>(f>'An error occurred: {e}'>)> |
>
>
Wyjście:
Enter a number: An error occurred: EOF when reading a line>
Inne klauzule w Pythonie
Kod wchodzi do bloku else tylko wtedy, gdy klauzula try nie zgłasza wyjątku.
Przykład: W innym przypadku zostanie wykonany blok tylko wtedy, gdy nie ma wyjątku .
Python3
# Python code to illustrate working of try()> def> divide(x, y):> >try>:> ># Floor Division : Gives only Fractional> ># Part as Answer> >result>=> x>/>/> y> >except> ZeroDivisionError:> >print>(>'Sorry ! You are dividing by zero '>)> >else>:> >print>(>'Yeah ! Your answer is :'>, result)> > # Look at parameters and note the working of Program> divide(>3>,>2>)> divide(>3>,>0>)> |
>
>
Wyjście:
Yeah ! Your answer is : 1 Sorry ! You are dividing by zero>
Wreszcie słowo kluczowe Python
Python udostępnia słowo kluczowe Wreszcie , który jest zawsze wykonywane po próbie i wykluczeniu bloków. Blok Final zawsze jest wykonywany po normalnym zakończeniu bloku try lub po zakończeniu bloku try z powodu jakiegoś wyjątku. Nawet jeśli powrócisz do bloku z wyjątkiem, blok final zostanie wykonany
Przykład: Spróbujmy zgłosić wyjątek w bloku z wyjątkiem i w końcu wykonamy wyjątek, który zostanie wygenerowany lub nie
Python3
# Python code to illustrate> # working of try()> def> divide(x, y):> >try>:> ># Floor Division : Gives only Fractional> ># Part as Answer> >result>=> x>/>/> y> >except> ZeroDivisionError:> >print>(>'Sorry ! You are dividing by zero '>)> >else>:> >print>(>'Yeah ! Your answer is :'>, result)> >finally>:> ># this block is always executed> ># regardless of exception generation.> >print>(>'This is always executed'>)> # Look at parameters and note the working of Program> divide(>3>,>2>)> divide(>3>,>0>)> |
>
>
Wyjście:
Yeah ! Your answer is : 1 This is always executed Sorry ! You are dividing by zero This is always executed>