Wyjątek to nieoczekiwane zdarzenie, które ma miejsce podczas wykonywania programu. Nazywa się to również błędem czasu wykonania. Gdy wystąpi ten błąd, Python generuje wyjątek podczas wykonywania, który można obsłużyć, co zapobiega przerywaniu programu. W tym artykule skupimy się na tym, jak wydrukować wyjątek w Pythonie?
Co to jest wyjątek w Pythonie?
W Pyton , Wyjątek jest rodzajem błędu w programie. Błąd nazywany jest „wyjątkiem”, gdy program jest poprawny składniowo, ale podczas jego wykonywania pojawia się błąd.
Przykład : W tym przykładzie próbujemy podzielić liczbę przez zero, co powoduje błąd wykonania.
Python3
klucz okresu
num1>=> 5> num2>=> 0> print>(num1>/> num2)> |
>
>
Wyjście
Traceback (most recent call last): File 'Solution.py', line 5, in print(num1 / num2) ZeroDivisionError : division by zero>
Ten program jest składniowo poprawny . Jedynym problemem są liczby używane do tej operacji. Ponieważ nie możemy podzielić żadnej liczby przez 0, zgłasza to błąd. Jest to zatem przykład „wyjątku”.
Jak wyglądają wyjątki?
W powyższym programie, kiedy go wykonaliśmy, otrzymaliśmy wyjątek. Zgłoszony błąd zawierał wiersz, w którym wystąpił błąd, dokładny wiersz i typ błędu.
Wyświetlony typ błędu nazywany jest „wyjątkiem”. Dzięki wyjątkom dowiadujemy się o problemie, który wystąpił. Wyjątkiem w powyższym programie jest ZeroDivisionError: dzielenie przez zero .
Przykład : Tutaj przypisanie zmiennej var1 odbywa się poprzez an niezdefiniowana zmienna , zm.2.
Python3
var1>=> var2> |
>
>
Wyjście
Traceback (most recent call last): File 'Solution.py', line 2, in var1 = var2 NameError: name 'var2' is not defined>
Powyżej możemy zobaczyć wyjątek jako NameError: nazwa „var2” nie jest zdefiniowana .
Obsługa wyjątków w Pythonie
Wyjątki mogą czasami być bardzo kłopotliwe. Tutaj pojawia się koncepcja obsługi wyjątków. Dzięki obsłudze wyjątków możemy łatwo obsługiwać wyjątki dla użytkownika, zamiast po prostu wyrzucać mu błędy.
Przykład : W tym programie dane wejściowe są typu „int”. Ale jeśli wprowadzimy w nim znak, wygeneruje „ValueError”. Może to często dezorientować użytkownika. Tutaj wykonujemy obsługę wyjątków. Zamiast wyrzucać błąd wartości i dezorientować użytkownika, wyświetlimy komunikat sugerujący użytkownikowi ponowną próbę i damy mu szansę na ponowną próbę wprowadzenia liczb.
Python3
num1>=> int>(>input>(>'Enter num1: '>))> num2>=> int>(>input>(>'Enter num2: '>))> answer>=> f>'{num1} / {num2} = {num1 / num2}'> print>(answer)> |
>
statyczne słowo kluczowe w Javie
>
Wyjście
Enter num1: 1 Enter num2: b Traceback (most recent call last): File 'D:/PycharmProjects/pythonProject2/main.py', line 15, in num2 = int(input('Enter num2: ')) ValueError: invalid literal for int() with base 10: 'b'> Używanie try, z wyjątkiem i innego
W tym kodzie uruchomiona jest pętla while, ponieważ chcemy pozwolić użytkownikowi próbować, dopóki dane wejściowe nie zostaną podane we właściwy sposób. Użyliśmy klauzuli „try”. Klauzula try sprawdza, czy w wierszach tej klauzuli nie występują błędy.
Jeżeli napotkany zostanie wyjątek, przeskakuje do klauzuli „except” i wypisuje dostarczony przez nas komunikat o błędzie. Napisaliśmy dwie klauzule z wyjątkiem, jedna z błędem ValueError, a druga z błędem ZeroDivisionError. Każda z tych klauzul dotyczy odpowiednich wyjątków i drukuje odpowiednie komunikaty.
Na koniec napisaliśmy klauzulę else. Jeśli nie zostanie napotkany żaden błąd, wykonywany jest blok else. W bloku else wypisujemy iloraz dzielenia i wychodzimy z pętli.
Python3
while> True>:> >try>:> >num1>=> int>(>input>(>'Enter num1: '>))> >num2>=> int>(>input>(>'Enter num2: '>))> >answer>=> f>'{num1} / {num2} = {num1 / num2}'> >except> ValueError as e:> >print>(>'Try putting an integer value.
Error Occured:'>, e)> >except> ZeroDivisionError as ex:> >print>(>'Division by zero is invalid!
Error Occured:'>, ex)> >else>:> >print>(answer)> >break> |
>
>
Wyjście:
kolekcja Javy

Drukowanie wyjątków
Teraz, gdy już widzieliśmy, czym dokładnie są wyjątki, jak wyglądają i jak sobie z nimi radzić, teraz przyjrzymy się ich drukowaniu.
Aby wydrukować wyjątki, używamy 'Jak' słowo kluczowe Pythona.
Użyliśmy tego samego przykładu, którego używaliśmy wcześniej. Użyliśmy słowa kluczowego „as” i zadeklarowaliśmy zmienną „ve” dla „ValueError” i „zde” dla „ZeroDivisionError”. Następnie, jeśli napotkamy jakieś wyjątki, napisaliśmy kod, aby wydrukować ten wyjątek. Ale nadal nie jesteśmy w stanie zobaczyć typu wyjątku, który otrzymaliśmy.
Python3
while> True>:> >try>:> >num1>=> int>(>input>(>'Enter num1: '>))> >num2>=> int>(>input>(>'Enter num2: '>))> >answer>=> f>'{num1} / {num2} = {num1 / num2}'> >except> ValueError as ve:> >print>(ve)> >except> ZeroDivisionError as zde:> >print>(zde)> >else>:> >print>(answer)> >break> |
lista tablic Java
>
>
Wyjście:
Enter num1: a invalid literal for int() with base 10: 'a' Enter num1: 0 Enter num2: 0 division by zero Enter num1: 16 Enter num2: 4 16 / 4 = 4.0>
Typ wyjątku drukowania
Aby zobaczyć typ wyjątku, możemy użyć funkcji type().
Tutaj użyliśmy funkcji type(), aby poznać typ wyjątku, który napotkaliśmy podczas uruchamiania kodu.
Python3
while> True>:> >try>:> >num1>=> int>(>input>(>'Enter num1: '>))> >num2>=> int>(>input>(>'Enter num2: '>))> >answer>=> f>'{num1} / {num2} = {num1 / num2}'> >except> ValueError as ve:> >print>(>type>(ve), ve)> >except> ZeroDivisionError as zde:> >print>(>type>(zde), zde)> >else>:> >print>(answer)> >break> |
>
>
Wyjście
Enter num1: a invalid literal for int() with base 10: 'a' Enter num1: 1 Enter num2: 0 division by zero Enter num1: 4 Enter num2: 2 4 / 2 = 2.0>