Unity手游崩溃异常如何python 捕获所有异常 C#及JVMpython 捕获所有异常

《51测试天地》―顾翔与你一起漫谈测试
《51测试天地》―腾讯WeTest教你玩转手游测试
Unity手游崩溃异常如何捕获
  1、C#脚本异常捕获  C#脚本未捕获的异常,与和Native未捕获异常很大的区别是,未捕获异常不会照成引用的闪退。所以,C#脚本的异常危害相对较小,但是同样更加容易存在在游戏中。闪退问题能够及时发现并进行修复。C#脚本异常,抛出的时机不同,危害性也有所不同; 在Start、Awake等函数抛出的异常,会造成Update、OnGUI无法正常运行,游戏可能表现为无响应、图片确实等。Update、OnGUI的异常也一定会引起游戏逻辑及画面上的一些异常。  从角度,C#脚本未捕获的异常时一定需要报告给开发者的。  1.1、AppDomain.CurrentDomain.UnhandledException回调  这几乎是所有语言都会提供的一个机制,在发生未捕获异常时回调。System.AppDomain在Unity的文档中是不存在的,根据官网的解释,CurrentDomain获取到当前应用程序当前线程的应用域。  If the UnhandledException event is handled in the default application domain, it is raised there for any unhandled exception in any thread, no matter what application domain the thread started in.  如果是在默认域中注册,任何线程中抛出的未捕获异常均会触发这个未处理异常函数。  &  然后,在游戏里面,尝试在其他线程抛出异常。  &  但是,抛出异常后并没有被这个处理函数接收到。  &  在UI线程中,Unity官方提供的函数基本上都会有try..catch,所以很难有出现未捕获的异常。比如,我们尝试通过下面的代码抛出未捕获异常&  &  GameObject.SendMessage显然是接住了这个异常,并打印出了这个异常信息。所以,UnhandledException大部分时候将会非常鸡肋,并没什么卵用。  &  1.2、Application.RegisterLogCallback日志回调  根据日志的TAG都会Unity,可以大致判断出UnityEngine自身的接口,在catch异常之后也是会调用Debug.LogError来输出日志的。所以,我们可以通过注册RegisterLogCallBack来获取到系统的调用。  &  但是,在OnLogCallbackHandler,是不能够调用Debug.Log,Debug.LogError这个API的,调用都会无效。Unity可能是为了避免引起,不必要的无限递归,所以在该函数下禁用Debug.Log。我们可以通过AndroidJavaClass调用Java代码来输出日志。  &  这样就能顺利的输出,未捕获的异常信息了。  直接下载本专刊:  本文收录于《测试专刊-腾讯WeTest教你玩转》。  版权声明:本文出自《测试专刊-腾讯WeTest教你玩转手游测试》。51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
建议使用IE 5.0以上浏览器,800×600以上分辨率,法律顾问:上海瀛东律师事务所 张楠律师
, 沪ICP备号
投诉及意见反馈:  
业务联系:  021-7提供企业信息化整体解决方案
Unity手游崩溃异常如何捕获
Unity手游崩溃异常如何捕获
| 作者: |
15:35:35| 阅读 0次
概述:本文将为大家讲解如何捕获Unity手游崩溃异常。
一、C#脚本异常捕获
C#脚本未捕获的异常,与Android和Native未捕获异常很大的区别是,未捕获异常不会照成引用的闪退。所以,C#脚本的异常危害相对较小,但是同样更加容易存在在游戏中。闪退问题能够及时发现并进行修复。C#脚本异常,抛出的时机不同,危害性也有所不同; 在Start、Awake等函数抛出的异常,会造成Update、OnGUI无法正常运行,游戏可能表现为无响应、图片确实等。Update、OnGUI的异常也一定会引起游戏逻辑及画面上的一些异常。
从测试角度,C#脚本未捕获的异常时一定需要报告给开发者的。
1.AppDomain.CurrentDomain.UnhandledException回调
这几乎是所有语言都会提供的一个机制,在发生未捕获异常时回调。System.AppDomain在Unity的文档中是不存在的,根据微软官网的解释,CurrentDomain获取到当前应用程序当前线程的应用域。
If the UnhandledException event is handled in the default application domain, it is raised there for any unhandled exception in any thread, no matter what application domain the thread started in.
如果是在默认域中注册,任何线程中抛出的未捕获异常均会触发这个未处理异常函数。
然后,在游戏里面,尝试在其他线程抛出异常。
但是,抛出异常后并没有被这个处理函数接收到。
在UI线程中,Unity官方提供的函数基本上都会try..catch,所以很难有出现未捕获的异常。比如,我们尝试通过下面的代码抛出未捕获异常。
GameObject.SendMessage显然是接住了这个异常,并打印出了这个异常信息。所以,UnhandledException大部分时候将会非常鸡肋,并没什么卵用。
2.Application.RegisterLogCallback日志回调
根据日志的TAG都会Unity,可以大致判断出UnityEngine自身的接口,在catch异常之后也是会调用Debug.LogError来输出日志的。所以,我们可以通过注册RegisterLogCallBack来获取到系统的调用。
但是,在OnLogCallbackHandler,是不能够调用Debug.Log,Debug.LogError这个API的,调用都会无效。Unity可能是为了避免引起,不必要的无限递归,所以在该函数下禁用Debug.Log。我们可以通过AndroidJavaClass调用Java代码来输出日志。
这样就能顺利的输出,未捕获的异常信息了。
二、Java未捕获异常
Android在Thread中提供了setUncaughtExceptionHandler和
setDefaultUncaughtExceptionHandler,setUncaughtExceptionHandler函数只对应注册的线 程中起作用,setDefaultUncaughtExceptionHandler能够在所有线程中都有用。所以,我 们要监听Jvm层抛出的未捕获异常,可以直接注册DefaultUncaughtExceptionHandler。
默认的未捕获处理函数,在接到异常之后,最后会把进程杀死。如果,不杀死会照成无响应bug。
在代码中增加上述,检测程序后,即可输出如下的日志结果。
原文转载自:
慧都控件|提供软件技术整体解决方案
云集全球三千余款优秀控件、软件产品,提供行业领先的咨询、培训与开发服务
企业QQ:|电话:023-
服务与支持
重庆 / 023-
北京 / 010-
400-700-1020
慧都科技有限公司 版权所有 Copyright 2003-
400-700-1020
<input type="hidden" id="url" value=""/>没有更多推荐了,
不良信息举报
举报内容:
[Unity3D]引擎崩溃、异常、警告、BUG与提示总结及解决方法
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!主要城市:
职位分类:
工作经验:1年以下
学历:本科
公司规模:20-99人
公司性质:民营
岗位职责: 1 、负责Unity3d手游客户端的开发; 2 、负责公司app游戏产品的前端开发工作; 3 、编写简易代码,做基础的开发工作; 4 、协助软件工程师完成技术文档的撰写及测试工作; 岗位要求: 1 、理工科院校计算机专业应届毕业生,入职...
工作经验:3-5年
学历:本科
公司规模:20-99人
公司性质:民营
岗位职责: 1 、熟悉Unity3D引擎,使用C#进行基于U3D引擎的游戏项目的开发; 2 、游戏独立功能模块的代码设计及实现; 3 、负责客户端在Android、IOS平台下的功能开发; 4 、负责客户端的稳定性和高效性优化开发; 5 、配合团队其他成员进...
工作经验:5-10年
学历:本科
公司规模:20-99人
公司性质:民营
岗位职责: 1 、带领客户端开发团队使用Unity3d进行游戏开发; 2 、负责游戏前端程序架构设计、核心算法实现、关键点难点技术公关; 3 、负责客户端项目计划制定和管理、进度和质量把控、团队技术提升工作; 4 、负责与服务器、策划、美术等其他内部相关组组织...
智联招聘为您推荐 “ 山西Unity3d游戏开发招聘 ”相关职位信息:
山西Unity3d游戏开发招聘网是由智联招聘专为山西找Unity3d游戏开发工作的求职者创建的,包含了大量更新、更全的山西Unity3d游戏开发招聘信息,每天免费为您提供真实、可靠、权威的Unity3d游戏开发招聘信息。在山西找Unity3d游戏开发工作尽在智联Unity3d游戏开发招聘网。
山西Unity3d游戏开发招聘相关职位推荐:
山西银行招聘热门推荐:
您可以在中查看没有更多推荐了,
不良信息举报
举报内容:
[Unity3D]引擎崩溃、异常、警告、BUG与提示总结及解决方法
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!}

我要回帖

更多关于 今年什么手游好玩 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信