2010-07-13 3 views
3

Je reçois des erreurs comme ceci:exceptions python imprimées de façon normale avec PyObjC

2010-07-13 20: 43: 15.131 Python [1527: 60F] principal: Pris OC_PythonException:: exemple LoginMenuSet n'a pas d'attribut 'play_sound'

C'est avec ce code:

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

Je veux que l'exception python soit imprimée normalement avec la traceback et tout le reste.

Merci.

Répondre

-1

Voilà ma propre solution:

En classe 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__"]]; 
    } 

Dans la sous-classe python PyObjC:

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

I, plats, importé le module de retraçage.

9

Une astuce pour voir les exceptions Python est d'appeler objc.setVerbose(1). Cela rend PyObjC légèrement plus verbeux et l'oblige à imprimer des traces de pile Python lors de la conversion des exceptions de Python en Objective-C.

+0

Merci pour cette réponse mais depuis que j'ai posé cette question, j'ai finalement trouvé ma propre solution. J'ai oublié de répondre à ma propre question, mais je vais le faire ci-dessous. –

+0

Pour être complet, vous devez d'abord 'importer objc'. – reubano

Questions connexes