提问人:marwinXXII 提问时间:12/27/2012 更新时间:12/27/2012 访问量:749
向未捕获的异常添加额外信息
Add extra information to uncaught exception
问:
在 Google.Play 中,有一个关于未捕获异常的统计信息。我想知道有没有办法向异常添加一些额外的信息,因此它将显示在Google.Play中(因为无法使用第三方错误报告服务)。
我知道,我想我可以写这样的东西Thread.setUncaughtExceptionHandler
public void uncaughtException (Thread thread, Throwable ex) {
throw new CustomException(ex, "extraData");
}
例如,我的自定义异常消息。
但是还有其他方法可以实现这一目标吗?
答:
1赞
Eng.Fouad
12/27/2012
#1
你是说?
public class CustomException extends Exception
{
public CustomException(Throwable cause, String message)
{
super(message, cause);
}
}
评论
0赞
marwinXXII
12/27/2012
是的,消息似乎是传递额外信息的唯一方法。主要问题是如何捕获这些异常
1赞
Raghav Sood
12/27/2012
#2
您可以使用 ACRA。除了提供比 Google Play 崩溃报告更多的信息外,它还允许您轻松地将自定义数据添加到报告中。
评论
0赞
marwinXXII
12/27/2012
我需要在 Google.Play 中查看此信息,而不是在其他服务中查看此信息,甚至在 Google Docs 中也是如此
0赞
Torben
12/27/2012
#3
我想说你错过了这里的重点。为了将信息添加到未捕获的异常中,您需要捕获该异常。一旦知道捕获异常的位置和方式,正确的方法是正确处理异常,以免对用户体验造成中断。
发生未捕获的异常的原因是您忽略了错误条件并且未处理错误条件。处理错误,不会有未捕获的异常需要担心。
了解可能的错误条件是编写良好工作程序的基础。如果你继续编写代码而忽略错误和状态代码,你将造成一团糟,经常会因未捕获的异常而崩溃。处理异常和错误需要花费大量时间和代码,但这只是编程的一部分,你不能忽视。
评论
0赞
marwinXXII
12/27/2012
关键是要有一个异常处理程序,它将添加额外的信息以供以后调查。这是必需的,因为我在 Google.Play 中看到错误,这些错误不会在测试环境中重现,而是存在于生产环境中(这可能是生产 Web 服务的问题,而不是应用程序本身)。我需要找出发生这些异常的原因,这就是为什么我需要一些额外的信息
0赞
Torben
12/27/2012
只需将您所做的一切都放在 try { ... } catch (Throwable th) { ... } 块中即可。没有单一位置,因为应用程序有多个入口点(onCreate、onResume、onPause、onBackpressed 等)。每次你自己的代码在控制中时,你都必须这样做。但即使这样也无法解决将无效数据传递给 API 的情况,例如,UI 线程引发异常。
0赞
marwinXXII
12/27/2012
我不想把所有东西都包进去(因为还有后台任务也需要try-catch)。我写过关于线程异常处理程序(或 defaultHandler)的文章,它可以作为单个捕获点。我的问题是,在处理程序中抛出异常会帮助我将额外的数据发送到Google.Play。还有其他选择吗?try{}catch{}
0赞
marwinXXII
12/27/2012
每个线程处理程序比每个类/代码段等更可取
0赞
Torben
12/27/2012
看来你有一个与原来不同的问题。请为此创建一个新问题。
评论