Как обрабатывать исключения в Python

Как обрабатывать исключения в Python

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





Независимо от того, создаете ли вы веб-сайт, API, модуль или любой другой продукт с использованием Python, ваша способность эффективно обрабатывать исключения позволяет вам явно указать причину ошибки.





Здесь мы рассмотрим, как вы можете обрабатывать исключения в Python.





Как работает обработка исключений в Python

Когда вы вызываете исключения, вы говорите Python отображать сообщение всякий раз, когда блок кода выходит из строя. Обработка исключений похожа на предложение кому-то попытаться поднять вес. А если они не могут, они должны сообщить вам об этом.

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



Когда следует использовать исключения в программировании на Python?

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

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





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

Обработка исключений Python

Чтобы обрабатывать исключения в Python, вам сначала нужно обернуть свой код в попробуй ... кроме блокировать. Иногда вам может потребоваться добавить наконец заявление для обработки дальнейших действий, в зависимости от ваших потребностей.





Концепция кодирования исключений Python обычно выглядит так:

try:
'code to be executed'
except:
'error message'

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

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

Вот пример:

try:
print(9+6)
except:
print('error message')
finally:
print('please restart')
Output:
15
please restart

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

An еще условие может также следовать Кроме утверждение:

try:
C = 2 + B
except:
print('B needs to be defined')
else:
print(u'Added successfully! The result is %s'%(C))
Output: B needs to be defined

Теперь попробуйте еще раз с определенным 'B':

try:
B = 5
C = 2 + B
except:
print('B needs to be defined')
else:
print(u'Added successfully! The result is %s'%(C))
Output: Added successfully! The result is 7

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

try:
C = 2 + B
except NameError as err:
print(err, ':', 'B needs to be defined, please')
else:
print(u'Added successfully! The result is %s'%(C))
Output: name 'B' is not defined : B needs to be defined, please

Вышеупомянутое исключение сначала проверяет, есть ли NameError в пытаться блокировать. Затем он печатает стандартный NameError сначала исключение («имя« B »не определено»). И поддерживает это с вашим письменным исключением («B необходимо определить, пожалуйста»).

Связано: Основные принципы программирования, которые должен знать каждый программист

как добавить ссылку на пост в инстаграм

И если вы хотите обрабатывать цепочку исключений, вы также можете сопровождать пытаться блок со многими Кроме заявления. Это очень удобно, если у вас пытаться block может иметь множество исключений:

try:
B = 5
C = 2 + B
D = float(6)
F = 7/0
except NameError as err:
print(err,':', 'B needs to be defined, please')
except ValueError as val:
print(val,':', 'You can't convert that data')
except ZeroDivisionError as zeroerr:
print(zeroerr,':', 'You can't divide a number by zero')
else:
print(u'Operation successfull! The results are: %s, %s, and %s'%(C, D, F))
Output: division by zero : You can't divide a number by zero

Что делать, если разделение действительно? Например, замена F = 7/0 в приведенном выше коде с F = 7/5 дает:

Output: Operation successfull! The results are: 7, 6.0, and 1.4

Пользовательские исключения в Python

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

Тем не менее, каждое определяемое пользователем исключение (прямо или косвенно) по-прежнему исходит от встроенного Исключение класс Python.

В приведенном ниже примере кода есть ссылка на базовый Исключение напрямую по телефону Ошибка выполнения от него:

class connectionError(RuntimeError):
def __init__(self, value):
self.value = value
try:
raise connectionError('Bad hostname')
except connectionError as err:
print(err.value)
Output: Bad hostname

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

Связанный: Руководство по регулярным выражениям в Python для новичков

Вы можете создать определяемое пользователем исключение, создав его непосредственно из Исключение базовый класс. Однако приведенное ниже исключение предотвращает вычитание 5 из 6 и вызывает исключение напрямую из базового класса:

class errors(Exception):
pass
class sixFiveError(errors):
def __init__(self, value, message):
self.value = value
self.message = message
try:
raise sixFiveError(6-5,'This substraction is not allowed')
except sixFiveError as e:
print('There was an error:', e.message)
Output: There was an error: This substraction is not allowed

На практике вы можете использовать исключение, которое вы определили ранее, вызвав его в другой функции. Например, вы можете создать floatError это позволяет добавить только два поплавка:

# First call the base exception classes:
class errors(Exception):
pass
# Next, derive your own exception from the base class:
class FloatError(errors):
def __init__(self, value, message):
self.value = value
self.message = message
# Create a function to add two floats:
def addTwoFloat(a, b):
if (type(a) and type(b)) != float:
raise FloatError(a+b,'Numbers must be float to add')
else:
print(a + b)
addTwoFloat(4, 7)
Output: __main__.FloatError: (11, 'Numbers must be float to add')

Потому что вы определили FloatError class, Python поднимет его, если вы попытаетесь добавить два литерала, отличных от числа с плавающей запятой, используя addtwoFloat функция.

Вы можете распечатать FloatError в том же файле Python, в котором вы его создали, чтобы увидеть, что произойдет:

print(FloatError)
Output:

FloatError однако это не встроенное исключение Python. Вы можете убедиться в этом, позвонив по телефону FloatError в другом новом файле Python, в котором вы не создавали этот класс:

print(FloatError)
Output: NameError: name 'FloatError' is not defined

Вы получаете NameError потому что Python не распознает это как стандартное исключение.

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

Сделайте свои программы на Python более удобными для пользователя с исключениями

В Python есть множество стандартных исключений. Но вы также можете определить свое. Тем не менее, простота использования вашей программы в некоторой степени зависит от того, как она обрабатывает различные исключения (определяемые пользователем, неспецифические или стандартные).

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

Делиться Делиться Твитнуть Эл. адрес Как отлаживать код Python

Вооружитесь ноу-хау, чтобы устранить каждую ошибку Python на своем пути.

Читать далее
Похожие темы
  • Программирование
  • Python
  • Учебники по кодированию
Об авторе Идису Омисола(Опубликовано 94 статей)

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

Ещё от Idowu Omisola

Подписывайтесь на нашу новостную рассылку

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

Нажмите здесь, чтобы подписаться