Получение исключений Python, напечатанных обычным способом с PyObjC - PullRequest
3 голосов
/ 13 июля 2010

Я получаю такие ошибки:

2010-07-13 20: 43: 15.131 Python [1527: 60f] основной: пойман OC_PythonException:: Экземпляр LoginMenuSet не имеет атрибута 'Play_sound'

Вот с этим кодом:

@try {
    [section loop]; //Loop through section
} @catch (NSException *exception) {
    NSLog(@"Caught %@: %@", [exception name], [exception reason]);
}

Я хочу, чтобы исключение Python печаталось нормально с помощью traceback и всего остального.

Спасибо.

Ответы [ 2 ]

9 голосов
/ 31 августа 2010

Один из способов увидеть исключения Python - вызвать objc.setVerbose(1). Это делает PyObjC немного более многословным и заставляет его печатать трассировки стека Python при преобразовании исключений из Python в Objective-C.

0 голосов
/ 01 сентября 2010

Вот мое собственное решение:

В классе Objective-C:

@try {
        [section loop]; //Loop through section
    } @catch (NSException *exception) {
        NSLog(@"main: Caught %@: %@", [exception name], [exception reason]);
        [self exception: [[exception userInfo] valueForKey: @"__pyobjc_exc_traceback__"]];
    }

В подклассе Python Pyobjc:

def exception_(self,trace):
        traceback.print_tb(trace)
        NSApplication.sharedApplication().terminate_(None) #Accept no errors

Я, конечно, импортировал модуль трассировки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...