Как заставить нормальное поведение сбоя при использовании 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;
}
Другие вопросы по тегам