一个搞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 { }