• iOS -- @try


    @try
    {
        // 业务逻辑
    }
    @catch (异常类型名1 ex)
    {
        //异常处理代码
    }
    @catch (异常类型名2 ex)
    {
        //异常处理代码
    }
    // 可以捕捉 N 个 异常 ...
    @finally
    {
    //回收资源
    }
    //捕获后执行的代码

    这是苹果的一种异常捕获机制,不常用

    将可能出现异常的代码放在@try里,如果出现异常,会查找是否有处理这个异常的catch,在catch里处理完毕之后,执行@finally中的代码

    @catch中也可能再次抛出异常,如果有异常没有被catch处理的话,finally中的代码会执行,finally后面的代码不会执行

    ios中很少用到try和catch

    简单的来说,Apple虽然同时提供了错误处理(NSError)和异常处理(exception)两种机制,但是Apple更加提倡开发者使用NSError来处理程序运行中可恢复的错误。而异常被推荐用来处理不可恢复的错误。

    原因有几个,在非gc情况下,exception容易造成内存管理问题(文档有描述即使是arc下,也不是安全的);exception使用block造成额外的开销,效率较低等等,另外这也的确是Cocoa开发者的习惯。




    try catch还有一个灵活的巧用:

    有时候我们加的全局断点并不能跳到异常的代码块,并且没有答应任何异常信息,
    我们根据异常的上下文 找到异常代码块但是不知道到底是报的什么异常,
    那么可以对那个异常代码块包上一个try catch ,
    然后在catch中打印exception的内容,这样就能够知道到底是出现了什么异常。
    每当出现bug或者crash的时候,我们总是习惯性的加入了NSLog或则单步调试。




     
  • 相关阅读:
    驱动表
    将索引移动到别的表空间
    log file sync, log file parallell write
    Full Hint
    4wpa_supplicant适配层 详解
    wifi 驱动 进阶11
    wifi 驱动 进阶11
    基于linux2.6.38.8内核的SDIO/wifi驱动分析
    6wpa_supplicant无线网络配置
    2系统启动后的 wifi加载 过程图解
  • 原文地址:https://www.cnblogs.com/chebaodaren/p/9661090.html
Copyright © 2020-2023  润新知