iOS已發布應用中對異常資訊捕獲和處理

2021-07-03 02:22:19 字數 2595 閱讀 9915

m

ios已發布應用中對異常資訊捕獲和處理

ios開發中我們會遇到程式丟擲異常退出的情況,如果是在除錯的過程中,異常的資訊是一目了然,但是如果是在已經發布的程式中,獲取異常的資訊有時候是比較困難的。

ios提供了異常發生的處理api,我們在程式啟動的時候可以新增這樣的handler,這樣的程式發生異常的時候就可以對這一部分的資訊進行必要的處理,適時的反饋給開發者。

不足的地方是,並不是所有的程式崩潰都是由於發生可以捕捉的異常的,有些時候是因為記憶體等一些其他的錯誤導致程式的崩潰,這樣的資訊是不在這裡體現的。

其實還有很多的處理的辦法。

l  比如可以在程式下一次起來的時候讀取這個異常檔案發生到服務端。

l  或者直接就是在處理**中用openurl的方式(mailto:)呼叫傳送郵件的方式,將異常資訊直接變成郵件傳送到指定位址。

以下是完整的**實現。

使用場景示例:

#pragma mark -

- (bool

nsdictionary

*)launchoptions

基本介面展示:

#import

@inte***ce

nduncaughtexceptionhandler : nsobject

+ (void

)setdefaulthandler;

+ (nsuncaughtexceptionhandler*)gethandler;

@end

//還可以選擇設定自定義的

handler

,讓使用者取選擇

介面實現展示

#import

"nduncaughtexceptionhandler.h"

return

[nssearchpathfordirectoriesindomains

(nsdocumentdirectory

, nsuserdomainmask

, yes

) lastobject];}

void

uncaughtexceptionhandler(

n***ception

*exception)

@implementation

nduncaughtexceptionhandler

-(nsstring

return

[nssearchpathfordirectoriesindomains

(nsdocumentdirectory

, nsuserdomainmask

, yes

) lastobject];}

+ (void

)setdefaulthandler

+ (nsuncaughtexceptionhandler*)gethandler

@end

異常崩潰報告:

**********===異常崩潰報告**********===

name:

nsrangeexception

reason:

*** -[nsarray objectatindex:]: index 1 beyond bounds [0 .. 0]

callstacksymbols:

0   corefoundation                      0x02393919 __exceptionpreprocess + 185

1   libobjc.a.dylib                     0x024e15de objc_exception_throw + 47

2   corefoundation                      0x0238958c -[__nsarrayi objectatindex:] + 236

9   graphicsservices                    0x02bf9afa purpleeventcallback + 1578

10  corefoundation                      0x02374dc4 __cfrunloop_is_calling_out_to_a_source1_perform_function__ + 52

11  corefoundation                      0x022d5737 __cfrunloopdosource1 + 215

12  corefoundation                      0x022d29c3 __cfrunlooprun + 979

13  corefoundation                      0x022d2280 cfrunlooprunspecific + 208

14  corefoundation                      0x022d21a1 cfrunloopruninmode + 97

17  uncaughte                           0x00002228 main + 102

18  uncaughte                           0x000021b9 start + 53

本文出自 「arthurchen」 部落格,請務必保留此出處

iOS已發布應用中對異常資訊捕獲和處理

ios開發中我們會遇到程式丟擲異常退出的情況,如果是在除錯的過程中,異常的資訊是一目了然,但是如果是在已經發布的程式中,獲取異常的資訊有時候是比較困難的。ios提供了異常發生的處理api,我們在程式啟動的時候可以新增這樣的handler,這樣的程式發生異常的時候就可以對這一部分的資訊進行必要的處理,...

iOS已發布應用中對異常資訊捕獲和處理

ios開發中我們會遇到程式丟擲異常退出的情況,如果是在除錯的過程中,異常的資訊是一目了然,但是如果是在已經發布的程式中,獲取異常的資訊有時候是比較困難的。ios提供了異常發生的處理api,我們在程式啟動的時候可以新增這樣的handler,這樣的程式發生異常的時候就可以對這一部分的資訊進行必要的處理,...

iOS已發布應用中對異常資訊捕獲和處理

ios已發布應用中對異常資訊捕獲和處理 ios開發中我們會遇到程式丟擲異常退出的情況,如果是在除錯的過程中,異常的資訊是一目了然,但是如果是在已經發布的程式中,獲取異常的資訊有時候是比較困難的。ios提供了異常發生的處理api,我們在程式啟動的時候可以新增這樣的handler,這樣的程式發生異常的時...