Getting python exceptions printed the normal way with PyObjC
I'm getting errors like this:
2010-07-13 20:43:15.131 Python[1527:60f] main: Caught OC_PythonException: : LoginMenuSet instance has no attribute 'play_sound'
That's with this code:
@try {
[section loop]; //Loop through section
} @catch (NSException *exception) {
NSLog(@"Caught %@: %@", [exception name], [exception reason开发者_运维问答]);
}
I want the python exception to be printed normally with the traceback and everything else.
Thank you.
One trick to see Python exceptions is to call objc.setVerbose(1)
. This makes PyObjC slightly more verbose and causes it to print Python stack traces when converting exceptions from Python to Objective-C.
Here's my own solution:
In Objective-C class:
@try {
[section loop]; //Loop through section
} @catch (NSException *exception) {
NSLog(@"main: Caught %@: %@", [exception name], [exception reason]);
[self exception: [[exception userInfo] valueForKey: @"__pyobjc_exc_traceback__"]];
}
In python pyobjc subclass:
def exception_(self,trace):
traceback.print_tb(trace)
NSApplication.sharedApplication().terminate_(None) #Accept no errors
I, of-course, imported the traceback module.
精彩评论