Python Glossary English

все Python 3ctypesисключение

ctypes.ArgumentError

исключения

Исключение ctypes: вызов внешней функции не смог преобразовать один из переданных аргументов; наследуется прямо от Exception, а не от TypeError.

Синтаксис

ctypes.ArgumentError

Ключевая неожиданность — класс наследуется прямо от Exception, поэтому except TypeError вокруг вызова C-функции его не поймает; перехватывайте ctypes.ArgumentError по имени. Возникает он на преобразовании конкретного аргумента, и его номер есть в тексте сообщения — читайте сообщение, а не гадайте. И наоборот: если у функции не заданы argtypes, проверять нечего, и вместо аккуратного ArgumentError вы рискуете получить порчу памяти или падение процесса.

Примеры

import ctypes
print(issubclass(ctypes.ArgumentError, Exception))  # → True
try:
    raise ctypes.ArgumentError('argument 1: TypeError')
except ctypes.ArgumentError as e:
    print(e)  # → argument 1: TypeError

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности