• 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 {  
              
        }  
  • 相关阅读:
    unsupported jsonb version number 123
    如何在MPlayer上支持RTSP
    TDengine 时序数据库的 ADO.Net Core 提供程序 Maikebing.EntityFrameworkCore.Taos
    如何使用IoTSharp对接ModBus?
    如何从源码启动和编译IoTSharp
    Asp.Net Core 自动适应Windows服务、Linux服务、手动启动时的内容路径的扩展方法
    MQTTnet 的Asp.Net Core 认证事件的扩展
    Asp.Net Core 中利用QuartzHostedService 实现 Quartz 注入依赖 (DI)
    The remote certificate is invalid according to the validation procedure 远程证书验证无效
    settings插拔式源码
  • 原文地址:https://www.cnblogs.com/someonelikeyou/p/3945849.html
Copyright © 2020-2023  润新知