美文网首页
感觉不错哦

感觉不错哦

作者: 师景福 | 来源:发表于2016-05-16 15:23 被阅读16次

http://www.jianshu.com/p/cd6724e864b1感觉不错哦

使用@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{

NSString *str = @"abc";

[str substringFromIndex:111];// 程序到这里会崩

}

@catch(NSException *exception) {

// 6

//        @throw exception; // 抛出异常,即由上一级处理

NSLog(@"%s\n%@", __FUNCTION__, exception);

}

@finally {

NSLog(@"tryTwo - 我一定会执行");

}

// 如果抛出异常,那么这段代码则不会执行

NSLog(@"如果这里抛出异常,那么这段代码则不会执行");

}

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

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

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

2)部分情况的崩溃我们是无法避免的,就算是QQ也会有崩溃的时候。因此我们可以在程序崩溃之前做一些“动作”(收集错误信息),以下例子是把捕获到的异常发送至开发者的邮箱。

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

// Override point for customization after application launch.

NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);

returnYES;

}

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];

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

}

相关文章

  • 感觉不错哦

    http://www.jianshu.com/p/cd6724e864b1感觉不错哦 使用@try、catch捕获...

  • 感觉还不错哦!

  • 不错哦

    不错哦

  • 不错哦

    你要加油,你要独自走过一段难熬的日子 不要告诉人家你有多痛,你有多苦,你有多怕。你要奔着自己的目标,头也不回的,勇...

  • 自己动手做衣柜,感觉不错哦!

    网上买柜子吗? 太大了 搬起来太费劲 实体店里买吗? 好贵啊 材料还不一定好 那就自己买木板做吧! 先算好尺寸 再...

  • 休息日

    休息日,下雨天,感觉心情不错哦!

  • 状态不错哦!

    休假第一天,可真算是忙碌,早早的送了儿子,紧接着送侄子,送完两个孩子,去做体检,还未体检完,爱人打来电话,说婆婆身...

  • 啊哟,不错哦

    不错

  • 哎哟不错哦

    我来试试新功能

  • 哎哟,不错哦

    大概是N年前了,豆瓣上有种说法,“苹果是周杰伦,太屌遭人恨但确实才华横溢。黑莓是陈奕迅,我行我素就算是去新浪微博也...

网友评论

      本文标题:感觉不错哦

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