使用PyObjC正常打印Python异常
我遇到了这样的错误:
2010-07-13 20:43:15.131 Python[1527:60f] main: 捕获到 OC_PythonException: : LoginMenuSet 实例没有属性 'play_sound'
这是用以下代码时出现的:
@try {
[section loop]; //Loop through section
} @catch (NSException *exception) {
NSLog(@"Caught %@: %@", [exception name], [exception reason]);
}
我希望 Python 的异常信息能够正常打印出来,包括错误追踪和其他所有内容。
谢谢。
2 个回答
9
一个查看Python错误的技巧是调用 objc.setVerbose(1)
。这样做会让PyObjC多说一些话,当它把Python中的错误转换成Objective-C时,会打印出Python的错误追踪信息。
0
这是我自己的解决方案:
在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
当然,我导入了traceback模块。