美文网首页
iOS做一些简单的异常处理

iOS做一些简单的异常处理

作者: rxdxxxx | 来源:发表于2016-03-20 22:10 被阅读101次

程序中写了如下代码, 就会立即崩溃


NSArray *arr = @[@"A"];
arr[3];

并会报错

-[__NSArrayI objectAtIndex:]: index 3 beyond bounds [0 .. 0]

崩溃导致用户不能使用App的其他功能, 是最坏的情况, 使用异常的捕捉就可以避免程序的直接崩溃

NSLog(@"111111111");
    
    @try {
        NSArray *arr = @[@"A"];
        arr[3];
        NSLog(@"222222");
        
    }
    @catch (NSException *exception) {
        NSLog(@"%@",exception);
        NSLog(@"3333333");
        
    }
    @finally {
        NSLog(@"4444444");
        
    }
    NSLog(@"555555");

使用捕捉后打印的信息是:

111111111
*** -[__NSArrayI objectAtIndex:]: index 3 beyond bounds [0 .. 0]
3333333
4444444
555555

可以看到, 即使是try发生了崩溃, try块停止执行, 但是其他块还是会执行.


如果要捕捉发生的异常进行保存和上传后台服务器, 那么可以通过
NSException中的方法惊醒捕捉


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    
    // 设置捕捉异常的回调
    NSSetUncaughtExceptionHandler(handleException);
    
    return YES;
}

/**
 *  拦截异常
 *
 *  @param ex 发送的异常会传递到函数中
 */
void handleException(NSException *ex){
NSMutableDictionary* info = [NSMutableDictionary new];

    info[@"callStackSymbols"] = [exception callStackSymbols]; // 调用栈信息(错误来源于哪个函数)
    info[@"name"] = [exception name]; // 异常的名字
    info[@"reason"] = [exception reason]; // 异常的描述(报错理由)
    
    [info writeToFile:@"xxxxxxx" atomically:YES];
}

如上发生的异常就会传入handleException函数中, 程序猿就可以对发生的异常进行写入本地文件的操作. 等下次用户启动应用,传给后台.

相关文章

  • iOS做一些简单的异常处理

    程序中写了如下代码, 就会立即崩溃 并会报错 崩溃导致用户不能使用App的其他功能, 是最坏的情况, 使用异常的捕...

  • iOS 全局异常捕获 包括signal

    iOS SDK中提供了一个现成的函数 NSSetUncaughtExceptionHandler 用来做异常处理,...

  • ios拓展30-crash符号化 UncaughtExcepti

    iOS SDK中提供了一个现成的函数 NSSetUncaughtExceptionHandler 用来做异常处理,...

  • iOS宏-获取crash信息

    iOS SDK中提供了一个现成的函数 NSSetUncaughtExceptionHandler 用来做异常处理,...

  • 如何自定义捕获线上崩溃日志

    iOS SDK中提供了一个现成的函数 NSSetUncaughtExceptionHandler 用来做异常处理 ...

  • iOS换肤功能的简单处理框架

    iOS换肤功能的简单处理框架 iOS换肤功能的简单处理框架

  • Spring异常处理

    1、配置简单异常处理器(此方法用于简单处理异常,即只能做跳转) 其中Key对应需要处理的异常种类,value对应需...

  • iOS异常处理

    开发iOS应用,解决Crash问题始终是一个难题。Crash分为两种,一种是由EXC_BAD_ACCESS引起的,...

  • iOS异常处理

    尽管当iphone应用崩溃时,它不会告诉用户发生了什么,但我们仍然可以为应用添加异常和信号处理,以此记录和展示发生...

  • 如何正确的写入和读取plist文件

    iOS的数据持久化存储有很多种方式,最近做内购相关的东西,想把一些异常订单信息和未处理订单信息存储起来,由于要...

网友评论

      本文标题:iOS做一些简单的异常处理

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