一個搞java的老闆問我會不會try catch 我說不會 學這麼久也沒聽周圍朋友用這個 由於蘋果控制檯原本就能夠打印異常 java
特此研究一下。ios
1.try catch: 是捕獲異常代碼段 特色:對代碼的實時監控 佔用大量資源安全
2.ios中不多用到try 和catchspa
簡單的來講,Apple雖然同時提供了錯誤處理(NSError)和異常處理(exception)兩種機制,可是Apple更加提倡開發者使用NSError來處理程序運行中可恢復的錯誤。而異常被推薦用來處理不可恢復的錯誤。 緣由有幾個,在非gc狀況下,exception容易形成內存管理問題(文檔有描述即便是arc下,也不是安全的);exception使用block形成額外的開銷,效率較低等等,另外這也的確是Cocoa開發者的習慣。(http://blog.csdn.net/x32sky/article/details/23753597)//怪不得我沒聽周圍IOS開發人員用這個
3.try,catch,finally執行流程 (http://blog.csdn.net/phoenix001/article/details/4293472).net
try{ //1:拋出異常的代碼 //2:代碼 }catch(){ //3:代碼 //4:拋出異常 }finally{ //5:代碼 } //6:代碼 首先要明確的一點是:無論try是否拋出異常,finally語句塊都會執行。 當心注意6!! 整個try,catch,finally執行有如下幾種狀況: 1:try語句塊沒有拋出異常。若是是這種狀況,程序會執行try,finally以及finally塊以後的代碼; 2:try語句塊拋出了異常而且catch有匹配的異常。當遇到try裏面拋出的異常後,try塊裏面剩下的代碼就不執行了,跳轉到catch塊裏面。 這裏又能夠分爲2種狀況。第一種,拋出的異常被後面的catch捕獲,而catch又沒有拋出新的異常,那麼執行順序是1356 ;第二種,若是catch裏面又拋出新的異常,順序是1345,而後將新的異常返回給方法調用者,6就不執行了 ; 3:try語句塊拋出了異常,可是後面的catch沒有能匹配的異常。那麼會執行try和finally裏面的語句也就是15,而後將該異常返回給方法調用者,不執行6 。 總結: 若是異常不能被捕捉的話,finally{}後面的語句就不會執行了,而finally{}必定被執行
4.舉例使用code
@try{ } @catch(NSException *exception) { NSLog(@"exception:%@", exception); } @finally { }