2011-05-24 39 views
0

我想知道異常處理的全局機制。編碼良好的異常處理 - @try @catch或沒有它

就像我有20個不同的類,我想把嘗試抓住所有,然後它可能是一些耗時以及可能會造成問題。

我發現了一些這樣的代碼

-(void)ExceptionOccure:(NSException *)exception 
{ 
    NSArray *stack = [exception callStackReturnAddresses]; 
    NSLog(@"%@", stack); 
} 

但我不能調用此方法,使用

-(void) applicationDidFinishLaunching: (UIApplication *) application 
{ 
    NSSetUncaughtExceptionHandler (&ExceptionOccure); 
} 

我才知道這種方法,但不能調用任何異常。

我想創建此異常處理的全局機制。這樣在任何類中如果發生任何異常,它都會調用上面的函數並處理異常,並且可以根據需要將堆棧存儲在數據庫中。

任何一個可以建議我或者給我提供的示例代碼爲全球處理異常..提前

感謝

+1

使用上面的確切代碼。 在此。 NSSetUncaughtExceptionHandler(&的UncaughtExceptionHandler); 我得到uncaughtExceptionHandler未聲明的錯誤。任何人都可以告訴我我錯過了什麼? – 2011-10-21 12:41:06

回答

0

你的處理函數是C函數,所以你必須實現它是這樣的:

static void uncaughtExceptionHandler(NSException *exception) 
{ 
    NSArray *stack = [exception callStackReturnAddresses]; 
    NSLog(@"%@", stack); 
} 

- (void)applicationDidFinishLaunching:(UIApplication *)application 
{ 
    NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler); 
}