未处理的异常处理

时间:2013-01-15 15:11:10

标签: xamarin.android

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

2 个答案:

答案 0 :(得分:3)

我不同意@SpiritMachine's answer

单声道文档tells us

  

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

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

AndroidEnvironment.UnhandledExceptionRaiser += (sender, args) =>
{
    // Do something...
};

答案 1 :(得分:-1)

尝试这样的事情:

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

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