我在应用程序商店中有一个Unity手机游戏,我有一个功能,可以将玩家的电子邮件发送到我的服务器,通知我发生的事情,这是不应该发生的。如果是我写的try
失败了,我给自己发了一封电子邮件,看看肯定有错误。
是否有可能构建类似OnException处理程序的东西,它会向我发送每个发生的异常的电子邮件,包括我没有编写的代码?有些例外可能来自我使用的插件,所以我希望有一些Listener,它可以在任何类型的异常被调用时执行。
这可能吗?
答案 0 :(得分:7)
您无法捕获其他插件中的所有其他异常。 Unity在后台执行此操作,Unity为您提供API以接收它捕获的异常:
较新版本的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);
}
修改强>:
Stacktrace问题:
如果stackTrace
参数为空,那么您可以使用System.Diagnostics.StackTrace
类在LogCallback
函数内部手动检索堆栈跟踪。例如,
void LogCallback(string condition, string stackTrace, LogType type)
{
//Send Email
System.Diagnostics.StackTrace sTrace = new System.Diagnostics.StackTrace();
Debug.Log(sTrace.ToString());
}
答案 1 :(得分:0)
答案 2 :(得分:-1)
结帐Hockey App。非常好的工具,拥有Unity sdk并完全满足您的需求。每个Debug.LogError或Debug.LogException都会在那里报告。因此,您不仅可以收到有关代码异常的通知,还可以收到一些数据缺失或您要报告为错误的任何内容。