Unity手游崩溃异常如何捕获--C#及JVM捕获

本文将详细介绍C#脚本异常对于手游造成的危害及原因

1 C#脚本异常捕获

 

C#脚本未捕获的异常,与Android和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代码来输出日志。


这样就能顺利的输出,未捕获的异常信息了。

 

2 Java未捕获异常

 

Android在Thread中提供了setUncaughtExceptionHandler和setDefaultUncaughtExceptionHandler,setUncaughtExceptionHandler函数只对应注册的线程中起作用,setDefaultUncaughtExceptionHandler能够在所有线程中都有用。所以,我们要监听Jvm层抛出的未捕获异常,可以直接注册DefaultUncaughtExceptionHandler。


 


默认的未捕获处理函数,在接到异常之后,最后会把进程杀死。如果,不杀死会照成无响应bug。


在代码中增加上述,检测程序后,即可输出如下的日志结果。

最新文章
1让崩溃“说话”:AI如何在噪声中识别根因信号? 游戏行业面临长线运营转型,崩溃治理成为关键挑战。腾讯CrashSight平台推出AI驱动的三大创新方案,推动游戏质量保障进入智能时代。
2范式转移:LLM如何重塑游戏自动化测试的底层逻辑 在WeTest与徐汇游戏服务产业中心合办的一场以“游戏AI技术提效”为主题的前沿技术研讨中,腾讯专家展示了基于LLM的智能体如何为游戏测试注入“认知智能”,从而重新定义自动化测试的边界与价值。
3「低成本、高质高效」WeTest AI翻译限时免费 如何突破语言壁垒,让游戏内容原汁原味地触达全球玩家?腾讯WeTest团队在提供LQA外,推出的AI翻译服务,正为这一难题提供全新解法。项目可根据自己的项目情况,选择适合的业务。
4共探游戏产业新未来,AI与云发行成提效增值核心引擎 由徐汇区文化和旅游局指导,腾讯WeTest等联合主办的“解锁游戏提效增值新范式”专场分享会成功落幕。活动聚焦游戏产业最前沿的AI与云技术,吸引了近百位游戏、金融、泛互联网行业从业者参与。
5游戏性能测评数据“上新” 一图读懂逐点半导体与腾讯PerfDog联合打造的 “帧生成”指标 逐点半导体与腾讯PerfDog联合打造的 “帧生成”指标,一图带你读懂!
购买
客服
反馈