Nel mio onCreate() ho impostato un gestore UncaughtException come segue:Come ri-generare un'eccezione
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable throwable) {
Log.e(getMethodName(2), "uncaughtException", throwable);
android.os.Process.killProcess(android.os.Process.myPid());
}
});
funziona bene, ma vorrei tornare comportamento predefinito del sistema di visualizzazione della forza- chiudere la finestra di dialogo per l'utente.
Se provo a sostituire la chiamata KillProcess()
con un throw throwable
, il compilatore si lamenta che ho bisogno di circondarlo con un try/catch.
Se mi circondano con un try/catch:
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable throwable) {
try {
Log.e(getMethodName(2), "uncaughtException", throwable);
throw throwable;
}
catch (Exception e) {
}
finally {
}
}
});
Il compilatore si lamenta ancora che throw throwable
bisogno di essere circondati da un try/catch.
Come faccio a ripetere il lancio? Tale che, ad eccezione di quello informativo Log.e()
, il sistema si comporta esattamente come prima: come non ho mai impostato un gestore UncaughtException predefinito.
Ci scusiamo, ma questo si traduce in un flusso infinito di Eccezioni non rilevate e nessuna finestra di chiusura forzata. Non è quello che sto cercando. –
Ho aggiornato la risposta. – Jeshurun
Funziona alla grande! Accettare +1. –