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

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

a = '54'
if type(a) != 'int':
    raise Exception('value of a must be integer')

Вывод:

Traceback (most recent call last):
  File "main.py", line 3, in <module>
    raise Exception('value of a must be integer')
Exception: value of a must be integer

Теперь вам не нужно постоянно создавать собственное исключение. В Python есть несколько встроенных исключений. Вот полный список всех исключений Python. Один из них, Assertion Error, обсуждается ниже.

Подтвердить исключение ошибки

Вместо того, чтобы ждать сбоя программы, мы делаем утверждение в python. Это гарантирует, что определенное условие будет выполнено перед выполнением любого дальнейшего кода. Например, кто-то написал какой-то код, используя какие-то сторонние библиотеки. На данный момент этот код может работать нормально, но в будущем это может измениться из-за изменений в этих сторонних библиотеках. Чтобы решить эту проблему, мы обычно утверждаем, что установленная версия библиотек (только те, которые используются нашим кодом, а не все) такая же, как и на момент создания кода. Ниже приведен пример кода

import numpy
assert (numpy.__version__ == '1.19.5')

Код выше вызовет ошибку, если numpy не имеет указанной версии.

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

Для обработки исключений мы можем использовать предложения try,except,else, finally. Блок try содержит код, который, как вы подозреваете, содержит ошибку. Блок Except содержит код, который должен быть выполнен, если в блоке try будут обнаружены какие-либо исключения. В блоке Else есть код, который выполняется, когда в блоке try не найдено исключений. В блоке finally есть код, который выполняется независимо от исключения в блоке try. Ниже приведен пример: -

try: 
    a, b = 10, 0
    print(a/b)
except:
    print('Except block: this code is executed when there is an exception in try block')
    
else:
    print('Else block: this code is executed when there is no exception in try block')
    
finally:
    print('Finally block: this code is executed regardless of the exception is found or not')

Вывод:

Except block: this code is executed when there is an exception in try block
Finally block: this code is executed regardless of the exception is found or not

Примечание: нет необходимости использовать их все, но использование блока try и exclude обязательно для обработки исключения.

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

import numpy
try: 
    assert (numpy.__version__ == '1.19.5')
    a, b = 10, 0
    print(a/b)
    
except AssertionError as error: 
    print(error)
    print('numpy is not of correct version')
    
except ZeroDivisionError as error:
    print(error)
    print('division by zero is not allowed')

Если numpy имеет неправильную версию, будет выполнен 1-й блок, кроме блока. Вывод будет:

numpy is not of correct version

Примечание. Первый оператор печати первого блока, кроме блока, ничего не печатает.

Если numpy на вашей версии имеет указанную выше версию, то деление переменной a на переменную b даст ошибку, которая будет обработана вторым блоком, и вывод будет:

division by zero
division by zero is not allowed

Надеюсь, эта статья помогла вам понять исключения в python.