zoukankan      html  css  js  c++  java
  • 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 {  
              
        }  
  • 相关阅读:
    zip 中文文件夹为空问题
    webview长按文本区域不显示文字放大镜等方法
    crash
    精疲力尽先生的造访
    告别忙碌的2017,迎来更加忙碌的2018
    传说中的59分!!
    为什么我一定吵不过女人?
    人挪活!
    低谷时,请读书!
    java小入门的感觉
  • 原文地址:https://www.cnblogs.com/someonelikeyou/p/3945849.html
Copyright © 2011-2022 走看看