IOS 異常捕獲

2021-08-27 19:17:23 字數 1363 閱讀 4352

#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 中,註冊訊息處理函式,處理崩潰資訊,寫入本地。註冊訊息處理函式的處理方法,處理崩潰資訊,...