异常搜集

1.有些异常是无法避免的。

Appdelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);
    return YES;
}
 
void UncaughtExceptionHandler(NSException *exception) {
    /**
     *  获取异常崩溃信息
     */
    NSArray *callStack = [exception callStackSymbols];
    NSString *reason = [exception reason];
    NSString *name = [exception name];
    NSString *content = [NSString stringWithFormat:@"========异常错误报告========\nname:%@\nreason:\n%@\ncallStackSymbols:\n%@",name,reason,[callStack componentsJoinedByString:@"\n"]];
 
    /**
     *  把异常崩溃信息发送至开发者邮件
     */
    NSMutableString *mailUrl = [NSMutableString string];
    [mailUrl appendString:@"mailto:test@qq.com"];
    [mailUrl appendString:@"?subject=程序异常崩溃,请配合发送异常报告,谢谢合作!"];
    [mailUrl appendFormat:@"&body=%@", content];
    // 打开地址
    //该方法已被弃用
    //NSString *mailPath = [mailUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSString *charactersToEscape = @"?!@#$^&%*+,:;='\"`<>()[]{}/\\| ";
    NSCharacterSet *allowedCharacters = [[NSCharacterSet characterSetWithCharactersInString:charactersToEscape] invertedSet];
    NSString *mailPath = [mailUrl stringByAddingPercentEncodingWithAllowedCharacters:allowedCharacters];

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:mailPath]];
}

<br /><br /><br />

2.有些异常是可以捕获的。

使用@try、catch捕获异常:

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

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

我们在不符合条件的情况下抛出异常:

@throw [NSException exceptionWithName:@"异常名称" reason:@"异常原因" userInfo:nil];

这样我们就可以用@try去捕获相应的异常并加以处理了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • JAVA异常与异常处理详解 一、异常简介 什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错。在jav...
    java大湿兄阅读 1,009评论 0 11
  • 通俗编程——白话JAVA异常机制 - 代码之道,编程之法 - 博客频道 - CSDN.NEThttp://blog...
    葡萄喃喃呓语阅读 3,219评论 0 25
  • 今天抽到的是星币一 感觉有段时间没抽到星币一了,抽到很开心,不论是云手还是星币,还是下面的秘密花园,都给人一种很静...
    塔罗师cat阅读 259评论 0 0
  • 苏百可知道自己离家的距离越来越远了。 百可重重地叹了口气,看看前面张鱼然的身影,又跟了上去。 苏百可没打算跟踪张鱼...
    青春貌美的老巫婆阅读 260评论 0 0
  • 我知道成长的岁月 注定要经受磨难 一场骤雨的初歇 不一定艳遇七彩的虹 一度春花的盛放 连落红也慈悲 我就在如歌的月...
    淡淡青莲阅读 628评论 16 24