首页 > 代码库 > IOS开发之--异常处理--使用try 和 catch 来捕获错误。

IOS开发之--异常处理--使用try 和 catch 来捕获错误。

一个搞java的老板问我会不会try catch  我说不会 学这么久也没听周围朋友用这个 因为苹果控制台本来就可以打印异常 

特此研究一下。

1.try catch:  是捕获异常代码段   特点:对代码的实时监控  占用大量资源

2.ios中很少用到try 和catch

简单的来说,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)

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.举例使用

@try{         }      @catch(NSException *exception) {          NSLog(@"exception:%@", exception);      }      @finally {                }  

 

IOS开发之--异常处理--使用try 和 catch 来捕获错误。