Как создать собственный тип исключения Python в расширении C? - PullRequest
11 голосов
/ 20 июня 2011

Я пишу модуль Python на C. Мне нужно сообщать об ошибках, которые не могут быть описаны встроенными исключениями Python. Поэтому я хочу выбросить исключения моего собственного типа. Проблема в том, что политика Python состоит в том, чтобы извлекать все исключения из класса BaseException. Я знаю, как создать объект производного типа (назначая tp_base memeber), но я не знаю, как получить ссылку на объект типа BaseException. PyExc_BaseException - это ссылка на PyObject, представляющая класс, а не объект типа.

Как вывести пользовательские исключения Python из кода C?

1 Ответ

5 голосов
/ 20 июня 2011

Самый простой способ создать новый тип исключения в коде C - это вызвать PyErr_NewException.

...