Исключения
В процессе выполнения Python-программа выдает информационные и диагностические сообщения с помощью следующих исключений:
-
Warning
-
Исключение, вызываемое для важных предупреждений, таких, как усечение данных в процессе вставки и т.д. Этот класс является производным от класса
Python StandardError
(определенного в модулеexceptions
). -
Error
-
Исключение, являющееся базовым классом всех других исключений, связанных с ошибками. Его можно использовать для перехвата всех исключений с помощью единственного утверждения
'except'
. Предупреждения не рассматриваются как ошибки и поэтому не должны использовать этот класс в качестве базового. Этот класс является производным от классаPython StandardError
(определенного в модуле exceptions). -
InterfaceError
-
Исключение порождается ошибками в Python-интерфейсе. Является производным от класса
Error
. -
DatabaseError
-
Исключение порождается ошибками обработки данных в БД. Оно является подклассом класса
Error
. -
DataError
-
Исключение порождается при обработке некорректных данных в БД (деление на ноль, выход величины за пределы допустимых значений и т.д.). Является производным от класса
DatabaseError
. -
OperationalError
-
Порождение исключения вызывается внешними причинами (неожиданный обрыв соединения, не найдено имя источника данных, невозможно обработать транзакцию, ошибка распределения памяти в процессе обработки и т.д.). Является производным от класса
DatabaseError
. -
IntegrityError
-
Исключение порождается при нарушении ссылочной целостности БД (например, попытка ссылки на несуществующую внешнюю запись). Является производным от класса
DatabaseError
. -
InternalError
-
Исключение порождается внутренними ошибками СУБД (например, курсор больше не является допустимым, транзакция не синхронизирована и т.д.). Является производным от класса
DatabaseError
. -
ProgrammingError
-
Исключение порождается программными ошибками (например, таблица не найдена или уже существует, синтаксическая ошибка в SQL-предложении, задано неверное число параметров и т.д.). Является производным от класса
DatabaseError
. -
NotSupportedError
-
Исключение порождается в случае использования вызова API. Является производным от класса
DatabaseError
. Схема наследования исключений показана на рисунке.
StandardError |__Warning |__Error |__InterfaceError |__DatabaseError |__DataError |__OperationalError |__IntegrityError |__InternalError |__ProgrammingError |__NotSupportedError
Рисунок. Схема наследования исключений
Примечание
Все исключения, возникающие в Python-драйвере, содержат коды завершения и их текстовую расшифровку. Для получения дополнительных сведений об исключении можно воспользоваться следующими расширенными свойствами, не входящими в спецификацию DB API 2.0:
-code
| код завершения СУБД ЛИНТЕР |
-message
| текстовая расшифровка кода завершения |
-linCode
| синоним свойства code |
-apiCode
| код ошибки прикладного интерфейса |
-sysCode
| код системной ошибки |
-object
| объект, вызвавший исключение |
Пример
try: con = LinPy.connect('SYSTEM', 'MANAGER8', '', LinPy.M_EXCLUSIVE) cur = LinPy.cursor(con) … except LinPy.DatabaseError as e: error, = e.args print(error.сode) print(error.apiCode) print(error.linCode) print(error.sysCode) print(error.message)