2012-12-27 50 views
0

在Google.Play中,存在关于未捕获的异常的统计信息。我想知道有没有什么方法可以为异常添加一些额外的信息,所以它会显示在Google.Play(导致第三方错误报告服务无法使用)。向未捕获的异常添加额外信息

我知道Thread.setUncaughtExceptionHandler,我想我可以写类似

public void uncaughtException (Thread thread, Throwable ex) { 
    throw new CustomException(ex, "extraData"); 
} 

与例如我自定义异常消息。

但是,有没有其他方法可以实现这一目标?

回答

1

你的意思是?

public class CustomException extends Exception 
{ 
    public CustomException(Throwable cause, String message) 
    { 
     super(message, cause); 
    } 
} 
+0

是的,消息似乎是传递额外信息的唯一方法。主要问题是如何捕捉这些异常 – marwinXXII

1

您可以使用ACRA。除了提供比Google Play崩溃报告更多的信息之外,它还允许您轻松地将custom data添加到报告中。

+0

我需要在Google.Play中看到此信息,而不是其他服务,甚至Google文档 – marwinXXII

0

我想说你错过了这里的观点。为了将信息添加到未捕获的异常中,您需要捕获异常。一旦您知道在哪里以及如何捕捉异常,正确的方法就是正确处理异常,以免造成用户体验中断。

未捕获的异常发生是因为您忽略了错误条件并且不处理错误条件。处理错误并且不会有未捕获的异常担心。

了解可能的错误条件是编写良好工作程序的基础。如果您继续使用代码忽略错误和状态代码,您将创建一个混乱,经常会遇到未捕获的异常。处理异常和错误需要很多时间和代码,但它只是编程的一部分,您不能忽略。

+0

要点是有一个异常处理程序,它将为以后的调查添加额外的信息。这是必需的,因为我在Google.Play中看到了错误,这些错误在测试环境中没有复制,但存在于生产中(这可能是生产Web服务的问题,而不是应用程序本身)。我需要找出造成这些异常的原因,这就是为什么我需要一些额外的信息。 – marwinXXII

+0

然后,将所做的所有事情放在try {...} catch(Throwable th){...}块中。没有一个地方,因为有几个入口点(onCreate,onResume,onPause,onBackPressed等)。您必须在每次控制自己的代码时执行此操作。但是即使这样也无法解决将无效数据传递给API的情况,例如,UI线程会抛出异常。 – Torben

+0

我不想在'try {} catch {}'中包装所有东西(因为还有后台任务也需要try-catch)。我已经写了关于线程异常处理程序(或者defaultHandler),它可以作为一个单一的接收点。我的问题是将抛出异常处理程序帮助我发送额外的数据到Google.Play。还有什么替代品。 – marwinXXII

相关问题