0

在我的 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
    }
4

2 回答 2

3

我不同意@SpiritMachine 的回答

Mono 文档告诉我们

注意:您不能依赖该AppDomain.UnhandledException事件,因为 MonoDroid 中永远不会处理托管异常;它们总是在 catch(Exception) 块内的 Android/托管边界处被拦截。

相反,我建议您执行以下操作:

AndroidEnvironment.UnhandledExceptionRaiser += (sender, args) =>
{
    // Do something...
};
于 2013-06-06T17:47:10.130 回答
-1

尝试这样的事情:

编辑:此代码无法处理捕获的错误。请参阅@Jim G. 的回答....

就个人而言,我会将错误处理本地化到您需要的地方。原因是,您不知道招募此处理程序时您的应用程序状态将是什么 - 您可能没有资源来进行处理...

于 2013-01-16T08:38:19.650 回答