Python Print Exception - Как попытаться исключить и распечатать ошибку

Python Print Exception - Как попытаться исключить и распечатать ошибку

Содержание
  1. Что такое исключение?
  2. Синтаксис try...except.
  3. Как вывести исключение с помощью try...except.
  4. Как напечатать имя исключения
  5. Заключение

Каждый язык программирования имеет свой способ обработки исключений и ошибок, и Python не является исключением.

В Python встроен синтаксис try...except, с помощью которого вы можете обрабатывать ошибки и не давать им прерывать выполнение вашей программы.

В этой статье вы узнаете, как использовать синтаксис try...except для обработки исключений в вашем коде, чтобы они не останавливали выполнение программы.

О чем мы будем рассказывать

Что такое исключение?

В Python исключение - это объект ошибки. Это ошибка, которая возникает во время выполнения вашей программы и останавливает ее работу - с последующим выводом сообщения об ошибке.

Когда возникает исключение, Python создает объект исключения, который содержит тип ошибки и строку, которую она затрагивает.

В Python есть множество встроенных исключений, таких как IndexError, NameError, TypeError, ValueError, ZeroDivisionError KeyError и многие другие.

Синтаксис try...except.

Вместо того чтобы позволить этим исключениям остановить выполнение вашей программы, вы можете поместить код, который вы хотите запустить, в блок try и обработать исключение в блоке except.

Основной синтаксис try...except выглядит следующим образом:

try: # code to run except: # handle error How to Handle Exceptions with try…except

Вы можете обработать каждое из исключений, упомянутых в этой статье, с помощью try...except. Фактически, вы можете обрабатывать все исключения в Python с помощью try...except.

Например, если у вас большая программа и вы не знаете, существует ли идентификатор или нет, вы можете выполнить то, что хотите сделать с идентификатором, в блоке try и обработать возможную ошибку в блоке except:

try: print("Here's variable x:", x) except: print("An error occured") # An error occured

Вы видите, что except выполнился, потому что в коде нет переменной с именем x.

Продолжайте читать. Потому что я покажу вам, как сделать так, чтобы эти ошибки выглядели лучше, показав, как изящно обрабатывать исключения.

Как вывести исключение с помощью try...except.

Но что, если вы хотите вывести именно то исключение, которое произошло? Вы можете сделать это, присвоив Exception переменной прямо перед ключевым словом except.

Когда вы делаете это и выводите исключение на терминал, вы получаете значение Exception.

Вот как я вывел исключение ZeroDivisionError в терминал:

try: res = 190 / 0 except Exception as error: # handle the exception print("An exception occurred:", error) # An exception occurred: division by zero

И именно так я вывел исключение NameError:

try: print("Here's variable x:", x) except Exception as error: print("An error occurred:", error) # An error occurred: name 'x' is not defined

Следуя этому шаблону, вы можете вывести на терминал любое исключение.

Как напечатать имя исключения

А если вы хотите получить точное имя исключения и вывести его на терминал? Это тоже возможно. Для этого достаточно воспользоваться функцией type(), чтобы получить тип исключения, а затем использовать атрибут __name__, чтобы получить имя исключения.

Вот как я модифицировал пример ZeroDivisionError, чтобы вывести точное исключение:

try: res = 190 / 0 except Exception as error: # handle the exception print("An exception occurred:", type(error).__name__) # An exception occurred: ZeroDivisionError

А вот как я модифицировал другой пример, чтобы вывести пример NameError:

try: print("Here's variable x:", x) except Exception as error: print("An error occurred:", type(error).__name__) # An error occurred: NameError

Обычно, когда вы сталкиваетесь с исключениями, такими как NameError и ZeroDivisionError, например, вы получаете ошибку в терминале таким образом:

Screenshot-2023-03-13-at-17.58.33
Screenshot-2023-03-13-at-17.58.33
Screenshot-2023-03-13-at-17.58.54
Screenshot-2023-03-13-at-17.58.54

Вы можете объединить функцию type() и переменную error, чтобы исключение выглядело лучше:

try:
    print("Here's variable x:", x)
except Exception as error:
    print("An error occurred:", type(error).__name__, "", error)  # An error occurred: NameError – name 'x' is not defined

try:
    res = 190 / 0
except Exception as error:
    # handle the exception
    print("An exception occurred:", type(error).__name__, "", error)  # An exception occurred: ZeroDivisionError – division by zero

Заключение

Как показано в этой статье, синтаксис try...except - это отличный способ обработки ошибок и предотвращения остановки программы во время выполнения.

Вы даже можете вывести это Exception на терминал, присвоив ошибку переменной, и получить точный тип Exception с помощью функции type().

Счастливого кодирования!