Как заставить нормальное поведение сбоя при использовании setDefaultUncaughtExceptionHandler()?
В разрабатываемом приложении я использую Google Analytics для отслеживания необработанных исключений, например:
// ...after setting up Google Analytics...
Thread.setDefaultUncaughtExceptionHandler(new AnalyticsExceptionHandler(Thread.getDefaultUncaughtExceptionHandler()));
И это обработчик, класс AnalyticsExceptionHandler:
public class AnalyticsExceptionHandler implements UncaughtExceptionHandler
{
// Private
private UncaughtExceptionHandler _defaultHandlerRef;
public AnalyticsExceptionHandler(UncaughtExceptionHandler defaultHandlerRef)
{
this._defaultHandlerRef = defaultHandlerRef;
}
@Override
public void uncaughtException(Thread t, Throwable e)
{
// ...track and send the exception to Google Analytics...
_defaultHandlerRef.uncaughtException(t, e);
}
}
Дело в том, что приложение никогда не падает, оно просто зависает. Если я удаляю строку setDefaultUncaughtExceptionHandler(), то приложение нормально падает.
Я делаю что-то не так в приведенном выше коде, передавая его предыдущему обработчику по умолчанию?
1 ответ
Почему бы не перебросить исключение?
public void uncaughtException(Thread t, Throwable e)
{
// ...track and send the exception to Google Analytics...
_defaultHandlerRef.uncaughtException(t, e);
throw e;
}