Java 报告未捕获的异常
我希望捕获未捕获的异常并将有关它们的报告发送到我的服务器。我就是这样实施的:Java 报告未捕获的异常,java,android,uncaught-exception,android-anr-dialog,Java,Android,Uncaught Exception,Android Anr Dialog,我希望捕获未捕获的异常并将有关它们的报告发送到我的服务器。我就是这样实施的: public final class MyApplication extends Application { private static Context context; private static Handler mainHandler; private static boolean isDebug; @Override public void onCreate()
public final class MyApplication extends Application
{
private static Context context;
private static Handler mainHandler;
private static boolean isDebug;
@Override
public void onCreate()
{
Thread.currentThread().setUncaughtExceptionHandler(new UncaughtExceptionHandler()
{
@Override
public void uncaughtException(final Thread thread, final Throwable ex)
{
new Thread()
{
@Override
public void run()
{
Looper.prepare();
ReportUtils.sendReport(thread, ex);
Thread.currentThread().getUncaughtExceptionHandler().uncaughtException(thread, ex);
Looper.loop();
Looper.myLooper().quit();
}
}.start();
}
});
context = getApplicationContext();
mainHandler = new Handler();
isDebug = (0 != (getApplicationInfo().flags &= ApplicationInfo.FLAG_DEBUGGABLE));
}
@Override
public void onTerminate(){}
public static Context getAppContext()
{
return context;
}
public static boolean isDebugMode()
{
return isDebug;
}
public static Handler getMainHandler()
{
return mainHandler;
}
}
这是正确的实施方式吗?还有其他选择吗?不要自己做,而是使用已经设置好的服务来做 Acra就是其中之一,它可以将您的崩溃报告上传到谷歌文档电子表格 Bugsense是另一个。它有免费帐户和付费帐户
Crashlytics对于android来说是相当新的,但是完全免费,所以我推荐它。设置起来非常简单。就我个人而言,我会使用ACRA作为起点,定制它以与我的后端系统对话(或将后端系统调整为ACRA就绪)。忽略我之前的评论,我不知道你使用的是android。但是,您应该始终更喜欢
ExecutorService
,而不是在您的服务器上创建新的线程own@CommonsWare谢谢你的建议。@colinmoreli创建一个简单的线程对我来说就足够了,不需要管理线程池或任何ExecutorSerice
提供的东西。