logo

Wyjątek drukowania w języku Python

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

Zrzut ekranu z-2023-10-16-12-36-50

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>