все 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Сообщить о неточности