你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS 捕獲系統外異常

iOS 捕獲系統外異常

編輯:IOS開發綜合

 

有時應用崩潰,而日志中的輸出信息太少,無法定位問題,這是最頭疼的事情,尤其很累的時侯,已經想不起來剛才改過什麼了,這就叫做無耐。

工欲善其事,必先利其器,下面的方法可以給多些信息,讓你看到堆棧執行順序,在哪裡崩潰的,也就能大概給個思路,確定問題的症結。

在 AppDelegate.m 類實現之前加入:

 

void UncaughtExceptionHandler(NSException *exception) {
    
    // 獲取異常相關信息
    NSArray *callStackSymbols = [exception callStackSymbols];
    NSString *callStackSymbolStr = [callStackSymbols componentsJoinedByString:@
];
    NSString *reason = [exception reason];
    NSString *name = [exception name];
    
    // 獲取系統當前時間
    NSDate * date = [NSDate date];
    NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init ];
    [dateFormatter setDateFormat:@yyyy年MM月dd日 HH小時mm分ss秒];
    NSString * dateStr = [dateFormatter stringFromDate:date];
    
    NSLog(@系統當前時間為:%@ 
,dateStr);
    NSLog(@異常名稱:%@ 
,name);
    NSLog(@異常原因:%@ 
,reason);
    NSLog(@堆棧標志:%@ 
,callStackSymbolStr);
}

 

 

在 AppDelegate.m 類實現的應用啟動方法中加入如下語句,為系統設置異常回調函數為上面的聲明,詳細說明見 “iOS Foundation 框架概述文檔:常量、數據類型、框架、函數、發布聲明”:
@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);
    

 


  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved