2010-07-13 40 views
3

遇到錯誤是這樣的:獲取蟒例外打印的正常的方式使用PyObjC

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異常。

謝謝。

回答

-1

這是我自己的解決方案:

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

在蟒蛇pyobjc子類:

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

我的課程,進口回溯模塊。

9

查看Python異常的一個技巧是致電objc.setVerbose(1)。這使得PyObjC稍微更加冗長,並導致它在將異常從Python轉換爲Objective-C時打印Python堆棧跟蹤。

+0

謝謝你的回答,但自從問這個問題後,我終於找到了自己的解決方案。 我忘了回答我自己的問題,但我會在下面做。 – 2010-09-01 12:20:40

+0

爲了完整性,您必須先導入objc。 – reubano 2017-06-28 16:31:23