iOS中 @try 和@catch

来源:互联网 发布:淘宝不错的睡衣店知乎 编辑:程序博客网 时间:2024/05/17 01:08

 @try {

        // 可能会出现崩溃的代码

        //1:抛出异常的代码

        //2:代码

    }

    @catch (NSException *exception){

        // 捕获到的异常exception

       //3:代码

       //4:抛出异常

    }

    @finally{

        //5:代码

        //一定会执行

    }

     //6:代码


   首先要明确的一点是:不管try是否抛出异常,finally语句块都会执行。  其中@finally可以去掉   @finqizhally可以去掉

   小心注意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{}一定被执行

   //Objective-C 异常处理过程

    

//    异常处理过程 :

//    -- 生成异常对象 : @try 中出现异常, 系统会生成一个异常对象, 该对象提交到系统中 系统就会抛出异常;

//    -- 异常处理流程 : 运行环境接收到 异常对象时, 如果存在能处理该异常对象的 @catch 代码块, 就将该异常对象交给 @catch 处理, 该过程就是捕获异常, 如果没有 @catch 代码块处理异常, 程序就会终止;

//    -- @catch 代码块捕获过程 : 运行环境接收到 异常对象 时, 会依次判断该异常对象类型是否是 @catch 代码块中异常或其子类实例, 如果匹配成功, 被匹配的 @catch 就会处理该异常, 都则就会跟下一个 @catch 代码块对比;

//    -- @catch 处理异常 : 系统将异常对象传递给 @catch 形参, @catch 通过该形参获取异常对象详细信息;


//其它注意点 :

//    -- @try 与 @catch 对应关系 : 一个 @try 代码块 可以对应 多个 @catch 代码块;

//    -- {} 省略问题 : 异常捕获的 @try @catch @finally 的花括号不可省略;

//

//    NSException 异常类 :

//    -- 简介 : NSException 是 OC 中所有异常的父类;

//    -- 位置永远在最后 : @catch 代码块捕获异常时查看 异常对象类型是否是 捕获的异常类型 或者其子类,     一旦放在开头, 后面的异常永远不可能捕获!!!


//    异常信息访问 :

//    -- name : 返回异常的详细名称;

//    -- reason : 返回异常引发的原因;

//    -- userInfo : 返回异常的用户信息, 一个 NSDictionary 对象;




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

//

//    有时候我们加的全局断点并不能跳到异常的代码块,并且没有答应任何异常信息,

//    我们根据异常的上下文 找到异常代码块但是不知道到底是报的什么异常,

//    那么可以对那个异常代码块包上一个try catch ,

//    然后在catch中打印exception的内容,这样就能够知道到底是出现了什么异常。

//    每当出现bug或者crash的时候,我们总是习惯性的加入了NSLog或则单步调试。


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 wif连上不能上网怎么办 手机wifi有个感叹号怎么办 分手不删qq微信怎么办 优盘提示被锁了怎么办 电视无线网卡插上没反应怎么办 光猫没有wan口怎么办 usb无线网卡坏了怎么办 wifi接收器电脑不识别怎么办 无线路由接收器识别不了怎么办 小米3一直闪红灯怎么办 手机拨号键删了怎么办 联想笔记本电脑无线网卡坏了怎么办 联想z360内置无线网卡坏怎么办 usb无线网卡驱动安装失败怎么办 无线网被禁用了怎么办 未连接无线通信已关闭怎么办 手机设置路由器打不开了怎么办 手机打不开登录路由器的网址怎么办 按了光猫复位后怎么办 按了猫的复位键怎么办 望远镜的镜片小水雾是怎么办 坚果r1不断重启怎么办 忘记Wi-Fi密码了怎么办 魅蓝手机null锁住了怎么办 红米手机锁屏了怎么办 不记得锁屏密码怎么办 小米手机音量键坏了怎么办 小米6音量键坏了怎么办 小米2s开不开机怎么办 小米4不充电了怎么办 小米2开不开机怎么办 手机开机键开不了机怎么办 三星s4反复重启怎么办 小米5反复重启怎么办 电脑系统奔溃了怎么办 电脑开机后屏幕出现英文怎么办 小米4开不开机了怎么办 小米4一直显示mi怎么办 小米手机开关键失灵怎么办 小米手机开机键失灵怎么办 小米6不断重启怎么办