iOS

iOS 开发异常处理

2016-08-18  本文已影响122人  75afc06dcc73

在开发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

上一篇下一篇

猜你喜欢

热点阅读