2016-08-13 3 views
0

В приложении я разрабатываю, я использую Google Analytics для отслеживания пойманных исключений, как так:Как заставить нормальное поведение при сбое при использовании setDefaultUncaughtExceptionHandler()?

// ...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); 
    } 
} 

Thing это приложение никогда не падает, оно просто зависает. Если я удалю строку setDefaultUncaughtExceptionHandler(), приложение будет нормально работать.

Я делаю что-то неправильно в приведенном выше коде, передавая его предыдущему обработчику по умолчанию?

+0

Посмотрите на https://stackoverflow.com/questions/46070393/replacing-default-uncaught-exception-handler-to-avoid-crash-dialog это может помочь вам –

ответ

0

Почему бы не повторить исключение?

public void uncaughtException(Thread t, Throwable e) 
{ 
    // ...track and send the exception to Google Analytics... 
    _defaultHandlerRef.uncaughtException(t, e); 

    throw e; 
}