iOS 异常处理,将bug信息发送到开发者邮箱

来源:互联网 发布:移动4g网络怎么开通 编辑:程序博客网 时间:2024/05/18 01:20

1.iOS

在程序的开发中我们难免会遇到崩溃的问题。然后在用户体验的时候,我们如何来防止崩溃的发生呢,并将我们的崩溃原因发送给开发者来处理它。

来看一个例子

NSString *str = @"523";        arr = @[@"sdad", @"dwada", @"ffwwra"];        [str substringFromIndex:111];

程序这样写的时候是绝对会崩溃的。我们如果想它不要崩溃,那么应该怎么做呢。

    @try {        NSString *str = @"523";        arr = @[@"sdad", @"dwada", @"ffwwra"];        [str substringFromIndex:111];    }    @catch (NSException *exception) {        NSLog(@"%s %@", __FUNCTION__, exception);    }    @finally {        //如何来对待这个异常处理        NSLog(@"tryTwo - 我一定会执行");    }

我们可以使用@try{}@catch(){}@finally来处理,这样程序在运行的时候就不会崩溃了。而是跑到@finnally这里边来处理异常然后在@catch里边来打印出崩溃原因

怎么样来实现发送给开发者邮件呢?

在iOS中发送邮件是很简单的。

封装来如下方法

////  CRASHBUG.h//  try处理异常////  Created by 黄权浩 on 15-1-24.//  Copyright (c) 2015年 黄权浩. All rights reserved.//#import <Foundation/Foundation.h>@interface CRASHBUG : NSObject+ (void)sendBug:(NSString *)bug interface:(NSException *)interfaceinfo;@end

////  CRASHBUG.m//  try处理异常////  Created by 黄权浩 on 15-1-24.//  Copyright (c) 2015年 黄权浩. All rights reserved.//#import "CRASHBUG.h"#import "AppDelegate.h"@implementation CRASHBUG+ (void)sendBug:(NSString *)bug interface:(NSException *)interfaceinfo{    NSTimeInterval time = [[NSDate date] timeIntervalSince1970];    long long int date = (long long int)time;    NSDate *dd = [NSDate dateWithTimeIntervalSince1970:date];    NSString *crashLogInfo = [NSString stringWithFormat:@"exception type : %@ \n crash reason : %@ \n call stack time : %@", interfaceinfo, bug, dd];    NSString *urlStr = [NSString stringWithFormat:@"mailto://xxxxxxxxx@xx.com?subject=bug report&body=Thank you for your cooperation!""Error Details:%@",crashLogInfo];    NSURL *url = [NSURL URLWithString:[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];    [[UIApplication sharedApplication] openURL:url];}@end
然后这么来使用

////  ViewController.m//  try处理异常////  Created by 黄权浩 on 15-1-24.//  Copyright (c) 2015年 黄权浩. All rights reserved.//#import "ViewController.h"#import "CRASHBUG.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view, typically from a nib.        @try {        NSString *str = @"523";        [str substringFromIndex:111];    }    @catch (NSException *exception) {        NSLog(@"%s %@", __FUNCTION__, exception);        /**         *  把异常崩溃信息发送至开发者邮件         */        [CRASHBUG sendBug:@"字符串的类型转化" interface:exception];            }    @finally {        //如何来对待这个异常处理        NSLog(@"tryTwo - 我一定会执行");    }}- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}@end

这样在崩溃的时候就能将邮件发送到开发者邮箱了



0 0
原创粉丝点击