LINUX.ORG.RU

Разработка собственного Exception

 , ,


0

1

Всем привет. Сразу предупреждаю, в Python полный нуб. Тем не менее нужна помощь в реализации следующей штуки. Пусть есть код на Python 3:

import myModule as m;

try:
        m.anyMethod();
except m.myError as e:
        print(e.additionalInfo);
        print(e.moreDetails);

Необходимо реализовать модуль myModule на C. Камнем преткновения стала разработка собственного типа исключения (m.myError).

Как реализовать m.myError так, чтобы потом обеспечить собственную поддержку дополнительных атрибутов e.additionalInfo, e.moreDetails?

Как на C реализовать полностью свой собственный Exception с картами и девицами? Где что почитать?

★★★★

Последнее исправление: cetjs2 (всего исправлений: 2)

Ответ на: комментарий от DarkAmateur

Тогда можно ещё точнее: как отнаследоваться и расширить производный от BaseException класс.

В руководстве по extending and embedding есть глава об определении своих типов. Но лично я постарался бы не связываться с созданием своего Python-расширения, а вызывал бы Си-функции (если у тебя Си) через ctypes. В этом случае можно расширять BaseException как и любой Python-класс.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

В extending and embedding вроде ничего не написано про создание своего Exception'а. Из адекватных функций я понял, PyErr_SetString и PyErr_SetObject, но я так понял в решении конкретно поставленной задачи не помогут.

DarkAmateur ★★★★
() автор топика
Ответ на: комментарий от DarkAmateur

В extending and embedding вроде ничего не написано про создание своего Exception'а

Не знаю насчет твоего extending and embedding, а в моем есть даже глава «2.1.4 Subclassing other types». Тебе нужно сабклассить BaseException (или RuntimeError). То есть на самом деле тебе это не нужно, но, если хочешь - валяй.

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.