ios捕获异常并发送图片,便于解决bug[通俗易懂]

ios捕获异常并发送图片,便于解决bug

大家好,又见面了,我是全栈君。

在开发过程中,我们有时候会留下Bug,用户在使用我们的app 的时候,有时会出现闪退,这时候我们能够让用户给我们发送邮件,以让我们开发者更加高速的地位到Bug的所在。以最快的时间解决。同一时候也提高用户体验。

       在AppDelegate.m文件里,加入例如以下代码:

01 NSUncaughtExceptionHandler* _uncaughtExceptionHandler = nil;
02 void UncaughtExceptionHandler(NSException *exception) {
03     NSLog(@"CRASH: %@", exception);
04     NSLog(@"Stack Trace: %@", [exception callStackSymbols]);
05      
06     // 异常的堆栈信息
07     NSArray *stackArray = [exception callStackSymbols];
08     // 出现异常的原因
09     NSString *reason = [exception reason];
10     // 异常名称
11     NSString *name = [exception name];
12      
13     NSString *syserror = [NSString stringWithFormat:@"mailto://75092731@qq.com?subject=bug报告&body=感谢您的配合!<br><br><br>"
14                           "Error Detail:<br>%@<br>--------------------------<br>%@<br>---------------------<br>%@",
15                           name,reason,[stackArray componentsJoinedByString:@"<br>"]];
16      
17     NSURL *url = [NSURL URLWithString:[syserror stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
18     [[UIApplication sharedApplication] openURL:url];
19     return;
20 }

   然后在 – ( BOOL )application:( UIApplication *)application didFinishLaunchingWithOptions:( NSDictionary *)launchOptions方法中加入一下代码:

1 // 保存系统处理异常的Handler
2     _uncaughtExceptionHandler = NSGetUncaughtExceptionHandler();
3      
4     // 设置处理异常的Handler
5     NSSetUncaughtExceptionHandler(&UncaughtExceptionHandler);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116313.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jupyter快捷键运行键_anaconda中的jupyter打不开

    jupyter快捷键运行键_anaconda中的jupyter打不开Jupyter快捷键总结

    2022年10月25日
  • 小程序常用的生命周期_小程序组件的生命周期

    小程序常用的生命周期_小程序组件的生命周期小程序的生命周期说白了就是指程序从创建、到开始、暂停、唤起、停止、卸载的过程。我们大概从三个角度看一下小程序的生命周期。(1):应用生命周期(2):页面生命周期(3):应用生命周期影响页面生命周期一:应用生命周期放一张从网上找的图:1:用户首次打开小程序,触发onLaunch(全局只触发一次)。:2:小程序初始化完成后,触发onShow方法,监听小程序显示。3:小程序从前台进入后台,触发onHide方法。:4:小程序从后台进入前台显示,触发onShow方法。5:小程序后台运行一

    2022年10月25日
  • 开发一个属于自己的app

    开发一个属于自己的app

    2021年9月18日
  • openjdk使用_深入地理解

    openjdk使用_深入地理解目录前言一、从JDK源码看双亲委派二、使用步骤1.引入库2.读入数据总结前言关于JVM类加载的基础理论知识,请参照《深入理解Java虚拟机》读书笔记(六)–虚拟机类加载机制(上)和《深入理解Java虚拟机》读书笔记(六)–虚拟机类加载机制(下)。一、从JDK源码看双亲委派注:博主是使用的是openjdk8,换了新电脑还没有去编译源码,所以看的是静态代码,关于如何编译和调试源码,网上不少文章都有介绍,这里就不赘述了我们都知道在Java类加载中,除了BootStrap加载器,App和Ext加载

    2022年8月11日
  • 钉钉自定义机器人发送消息到钉钉群[通俗易懂]

    钉钉自定义机器人发送消息到钉钉群[通俗易懂]1、新建机器人2、生成密钥packagecom.epmet.commons.tools.utils;/***描述一下**@authorxxxx*@date2020/6/2417:42*/importjavax.crypto.Mac;importjavax.crypto.spec.SecretKeySpec;importorg.apache.commons.codec.binary.Base64;importjava.net.URLEncod

    2022年5月13日
  • vue可以生成静态页面吗(vue视频为什么不能全屏)

    新建项目vue默认为body设置了margin:8px我们可以在App.vue<style>中,设置width和height为100%,对margin进行重写去掉边距html,body{width:100%;height:100%;margin:0;}

    2022年4月14日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号