2012-09-17 44 views
0

引發的異常,我們正在使用下面的代碼提高例外:如何避免記錄調用棧時,在Xcode

[NSException raise:@"ExceptionName" format:@"XYZ"]; 

時發生異常,調用堆棧同時登錄控制檯。我們不希望在控制檯中記錄調用堆棧。如何避免這一點。

回答

1

可可不能很好地與例外混合(習慣C++是另一回事)。您應該一般認爲異常在Cocoa中是不可恢復的。因此,您應該考慮在Cocoa中考慮另一種(更習慣的)錯誤處理形式。因此,簡短的回答是:「不要拋出/拋出異常,除非你不打算恢復」。


還不滿意?

你有能力捕獲異常,並試圖繼續:

#import <Foundation/Foundation.h> 

static void A() { 
    [NSException raise:@"ExceptionName" format:@"XYZ"]; 
} 

int main(int argc, const char * argv[]) { 
    @autoreleasepool { 
     @try { 
      A(); 
     } 
     @catch (NSException * e) { 
      NSLog(@"e=mc%p", e); 
      NSLog(@"What I meant to say is: %@", e); 
     } 
    } 
    return 0; 
} 

此外,框架提供一些高層次的條目和定製你的目的,outlined here - 您可以設置屏蔽自定義日誌級別,或者設置你自己的未捕獲的異常處理程序。

相關問題