美文网首页iOS
iOS 开发异常处理

iOS 开发异常处理

作者: 75afc06dcc73 | 来源:发表于2016-08-18 13:59 被阅读122次

    在开发APP时,我们通常都会需要捕获异常,防止应用程序突然的崩溃,防止给予用户不友好的一面。其实OBJECT-C的异常处理方法和java的雷同,懂JAVA的朋友一看就懂

    使用@try、catch捕获异常:

    以下是最简单的代码写法,其中@finally可以去掉:

    @try {
        // 可能会出现崩溃的代码
    }
    @catch (NSException *exception) {
        // 捕获到的异常exception
    }
    @finally {
    // 结果处理
    }
    

    在这里举多一具比较详细的方法,抛出异常:

    @try {
    // 1
    [self tryTwo];
    }
    @catch (NSException *exception) {
    // 2
    NSLog(@"%s\n%@", __FUNCTION__, exception);
    //        @throw exception; // 这里不能再抛异常
    }
    @finally {
    // 3
    NSLog(@"我一定会执行");
    }
    // 4
    // 这里一定会执行
    NSLog(@"try");
    
    
    tryTwo方法代码:
    
    - (void)tryTwo
    {
        @try {
        // 5
        NSString *str = @"abc";
        [str substringFromIndex:111]; // 程序到这里会崩
    }
    @catch (NSException *exception) {
        // 6
        //   @throw exception; // 抛出异常,即由上一级处理
        // 7
        NSLog(@"%s\n%@", __FUNCTION__, exception);
        }
      @finally {
        // 8
        NSLog(@"tryTwo - 我一定会执行");
      }
    
    // 9
    // 如果抛出异常,那么这段代码则不会执行
    NSLog(@"如果这里抛出异常,那么这段代码则不会执行");
    }
    

    为了方便大家理解,我在这里再说明一下情况:

    如果6抛出异常,那么执行顺序为:1->5->6->8->3->4

    如果6没抛出异常,那么执行顺序为:1->5->7->8->9->3->4

    相关文章

      网友评论

        本文标题:iOS 开发异常处理

        本文链接:https://www.haomeiwen.com/subject/piyvsttx.html