1.nssetuncaughtexceptionhandler
ios sdk提供了
nssetuncaughtexceptionhandler
函式,在ui執行緒發生未捕獲異常後,程序崩潰之前,handlerootexception會被執行。這樣獲取的崩潰資訊,即使沒有編譯時生成的符號檔案,也能夠列印出呼叫棧上的每個函式的名稱,只是沒有檔名和行號。
異常捕獲函式:
void uncaughtexceptionhandler(n***ception *exception)
nssetuncaughtexceptionhandler(&uncaughtexceptionhandler);
2.@try catch
@try
@catch (n***ception *exception)
@finally
原因有幾個,在非gc情況下,exception容易造成記憶體管理問題(文件有描述即使是arc下,也不是安全的);exception使用block造成額外的開銷,效率較低等等,另外這也的確是cocoa開發者的習慣。
總結:1.注意編譯警告,每乙個編譯警告都是乙個潛在bug,它總會在某種情況下發生錯誤。
2.編譯時自動靜態編譯設定:build settings ->run static analyzer 設定為yes.會在工程編譯時自動靜態編譯,提示你更多的從錯誤資訊。
3.編譯器的一些命令:"po"是print object.,列印物件內容。"p"則是列印實際位址,而非物件。"c"是遇到斷點時繼續程式。"$eax"時cpu的乙個暫存器,在異常情況下,這個暫存器會寄存乙個異常指標,如果在異常時輸入"po [$eax class]"會得到"$2
= ... n***ception",它是乙個異常類,這樣就可以列印它的name,reason等資訊了如"po [$eax name]"等。
iOS崩潰 捕獲異常處理
之前部落格介紹啦一種異常捕獲後彈窗提示使用者的方法,ios崩潰 捕獲異常處理 下面提供另外一種異常捕獲的方法。原理一致,但實現略有不同。可供參考。1 在didfinishlaunchingwithoptions 中,註冊訊息處理函式,處理崩潰資訊,寫入本地。註冊訊息處理函式的處理方法,處理崩潰資訊,...
iOS開發異常處理教程
以下是兩篇xcode開發如何處理異常的教程,建議一讀 梗概如下 基本上你能碰到兩種崩潰的情況 sigabrt 也叫exc crash 和exc bad access 也可能叫sigbus或sigsegv sigabrt是程式異常,容易定位,exc bad access通常直接就把斷點斷在了main處...
IOS捕獲異常,常用的異常處理方法
以下是最簡單的 寫法,其中 finally可以去掉 try catch n ception exception finally 在這裡舉多一具比較詳細的方法,丟擲異常 try catch n ception exception finally 4 這裡一定會執行 nslog try trytwo方法...