在我的MonoDroid应用程序中,当发生未处理的异常时,应用程序终止而没有任何消息。如果我可以在本地设备上重现错误,我可以通过Visual Studio调试它而没有任何问题。
但是,在远程设备上,我无法解决问题。
我在Application类中尝试了以下操作但它实际上并没有编写我的日志文件,除非我在Visual Studio中运行调试器。
public override void OnCreate()
{
base.OnCreate();
AndroidEnvironment.UnhandledExceptionRaiser += new EventHandler<RaiseThrowableEventArgs>(AndroidEnvironment_UnhandledExceptionRaiser);
}
void AndroidEnvironment_UnhandledExceptionRaiser(object sender, RaiseThrowableEventArgs e)
{
// Write Log File
}
答案 0 :(得分:3)
单声道文档tells us:
注意:您不能依赖
AppDomain.UnhandledException
事件,因为在MonoDroid中永远不会处理托管异常;它们总是在catch(异常)块中的Android /托管边界处截获。
相反,我建议您执行以下操作:
AndroidEnvironment.UnhandledExceptionRaiser += (sender, args) =>
{
// Do something...
};
答案 1 :(得分:-1)
尝试这样的事情:
编辑:此代码无法处理捕获的错误。请参阅@Jim G.'s answer ....
就个人而言,我会将错误处理本地化到您需要的地方。原因是,当你招募这个处理程序时,你不知道你的应用程序状态是什么 - 你可能没有你依赖的资源来处理......