捕获Unity中的所有exception
我在应用程序商店中有一个Unity手机游戏,我有一个function,可以将玩家的电子邮件发送到我的服务器,通知我发生的事情,这不应该发生。 如果我写的try
失败了,我会给自己发一封电子邮件,看看肯定有错误。
是否有可能构建类似OnException处理程序的东西,它会向我发送每个发生的exception的电子邮件,包括我没写的代码? 有些例外可能来自我使用的插件,所以我希望有一些Listener,当任何类型的exception被调用时它会发生。
那可能吗?
您无法捕获其他插件中的所有其他exception。 Unity在后台执行此操作,Unity为您提供API以接收它捕获的exception:
较新版本的Unity :
void OnEnable() { Application.logMessageReceived += LogCallback; } //Called when there is an exception void LogCallback(string condition, string stackTrace, LogType type) { //Send Email } void OnDisable() { Application.logMessageReceived -= LogCallback; }
较早版本的Unity :
void OnEnable() { Application.RegisterLogCallback(LogCallback); } //Called when there is an exception void LogCallback(string condition, string stackTrace, LogType type) { //Send Email } void OnDisable() { Application.RegisterLogCallback(null); }
还有logMessageReceivedThreaded
。
编辑 :
Stacktrace问题 :
如果stackTrace
参数为空,那么您可以使用System.Diagnostics.StackTrace
类在LogCallback
函数内部手动检索LogCallback
。 例如,
void LogCallback(string condition, string stackTrace, LogType type) { //Send Email System.Diagnostics.StackTrace sTrace = new System.Diagnostics.StackTrace(); Debug.Log(sTrace.ToString()); }
尝试这个解决方案,应该适用于您的情况:
https://answers.unity3d.com/questions/47659/callback-for-unhandled-exceptions.html
看看曲棍球应用程序 。 非常好的工具,拥有Unity sdk并完全满足您的需求。 每个Debug.LogError或Debug.LogException都会在那里报告。 因此,您不仅可以收到有关代码exception的通知,还可以通知您丢失的某些数据或者您要报告为错误的任何内容。
上述就是C#学习教程:捕获Unity中的所有exception分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/999184.html