Исключения тоже объекты

Исключением являются только обычные объекты Python , которые наследуют от встроенного BaseException . Сценарий Python может использовать raise заявление , чтобы прервать выполнение, в результате чего Python для печати трассировки стеки из стека вызовов в этой точке и представление экземпляра исключения. Например:

 >>> def failing_function():
...     raise ValueError('Example error!')
>>> failing_function()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in failing_function
ValueError: Example error! 

который говорит , что ValueError с сообщением 'Example error!' был поднят нашей failing_function() , который был выполнен в интерпретаторе.

Код вызова может выбрать обработку любых исключений, которые может вызвать вызов:

 >>> try:
...     failing_function()
... except ValueError:
...     print('Handled the error')
Handled the error 

Вы можете разжиться объектов исключения, назначая их в except... часть кода обработки исключений:

 >>> try:
...     failing_function()
... except ValueError as e:
...     print('Caught exception', repr(e))
Caught exception ValueError('Example error!',) 

Полный список встроенных исключений Python вместе с их описаниями можно найти в документации по Python: https://docs.python.org/3.5/library/exceptions.html . А вот полный список организованы иерархически: https://codecamp.ru/documentation/python/1788/exceptions/5535/exception-hierarchy .