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

本文介绍了一种在iOS应用程序中使用@try/@catch/@finally处理崩溃的方法,并通过发送带有崩溃信息的邮件来帮助开发者快速定位问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄权浩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值