Python C API: как получить строковое представление исключения?

Во-первых, я новичок в Objective-C, но я могу сказать то, что знаю.

Функции - это блоки кода, которые не связаны с объектом / классом, просто унаследованы от c, и вы вызываете их следующим образом:

// declaration
int fooFunction() {
    return 0;
}

// call
int a;
a = fooFunction();

В то время как методы прикреплены к классу / экземпляру (объекту) и Вы должны указать классу / объекту для их выполнения:

// declaration
- (int)fooMethod {
    return 0;
}

// call
int a;
a = [someObjectOfThisClass fooMethod];
10
задан Amro 19 August 2012 в 22:26
поделиться

1 ответ

Я думаю, что исключения Python печатаются путем запуска "str ()" в экземпляре исключения, который вернет интересующую вас отформатированную строку. Вы можете получить это из C, вызвав Метод PyObject_Str () , описанный здесь:

https://docs.python.org/c-api/object.html

Удачи!

Обновление: Я немного запутался, почему второй элемент, возвращаемый вам PyErr_Fetch () , является строкой. Я предполагаю, что вы получаете «ненормализованное исключение» и вам нужно вызвать PyErr_NormalizeException () , чтобы превратить этот кортеж в «настоящее» исключение, которое может отформатировать себя как строку, как вы хотите.

]
7
ответ дан 4 December 2019 в 02:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: