#include #include // 系統訊號截獲處理方法
void signalhandler(int signal);
// 異常截獲處理方法
void exceptionhandler(n***ception *exception);
const int32_t _uncaughtexceptionmaximum = 10;
void signalhandler(int signal)
// 獲取資訊
nsmutabledictionary *userinfo =
[nsmutabledictionary dictionarywithobject:[nsnumber numberwithint:signal] forkey:@"uncaughtexceptionhandlersignalkey"];
[userinfo setobject:callstack forkey:@"singalexceptionhandleraddresseskey"];
// 現在就可以儲存資訊到本地[]
}void exceptionhandler(n***ception *exception)
nsmutabledictionary *userinfo =[nsmutabledictionary dictionarywithdictionary:[exception userinfo]];
[userinfo setobject:callstack forkey:@"exceptionhandleraddresseskey"];
// 現在就可以儲存資訊到本地[]
nsarray *callstacksymbols = [exception callstacksymbols];
nsstring *callstacksymbolstr = [callstacksymbols componentsjoinedbystring:@"\n"];
nsstring *reason = [exception reason];
nsstring *name = [exception name];
ddlogerror(@"異常 >>");
ddlogerror(@"異常名稱:%@",name);
ddlogerror(@"異常原因:%@",reason);
ddlogerror(@"堆疊標誌:%@",callstacksymbolstr);
ddlogerror(@"異常 <<");
}//獲取呼叫堆疊
+(nsarray *)backtrace 注:
signalhandler 和 exceptionhandler 裡面的內容可以刪減,寫自己的方法。
**:
IOS 異常捕獲
include include 系統訊號截獲處理方法 void signalhandler int signal 異常截獲處理方法 void exceptionhandler n ception exception const int32 t uncaughtexceptionmaximum 10 ...
ios異常捕獲
當然是在你出錯的控制器裡捕獲,如果你想全域性捕獲,那你就把捕獲方法寫在你的根控制器裡,比如baseviewcontroller.m裡面 兩段 量很少噠 第一處 寫在viewdidload裡面 nssetuncaughtexceptionhandler uncaughtexceptionhandler...
iOS崩潰 捕獲異常處理
之前部落格介紹啦一種異常捕獲後彈窗提示使用者的方法,ios崩潰 捕獲異常處理 下面提供另外一種異常捕獲的方法。原理一致,但實現略有不同。可供參考。1 在didfinishlaunchingwithoptions 中,註冊訊息處理函式,處理崩潰資訊,寫入本地。註冊訊息處理函式的處理方法,處理崩潰資訊,...