2011-05-27 11 views

Respuesta

2

¿Por qué quieres hacer esto?

Si hay lugares donde puede detectar una excepción y hacer algo significativo, es decir, mostrar una advertencia útil y luego continuar con la aplicación en un estado consistente y utilizable, entonces bien.

Si no puede realizar ninguna acción significativa, solo permita que ocurra la falla. Hay muchas maneras en que puede recibir notificaciones sobre los fallos resultantes, para que pueda solucionarlos: por ejemplo, eche un vistazo a ACRA. O bien, la consola de desarrollo de Android ahora informará sobre el fracaso de sus aplicaciones distribuidas en el mercado.

+26

"¿Por qué quieres hacer esto?" No es una respuesta. –

+3

@Glenn, "¿Por qué quieres hacer esto?" es una respuesta perfectamente válida. Una respuesta no tiene por qué ser una respuesta directa a la pregunta. Puede ser en forma de "no deberías hacer eso, ¿has intentado considerar esto en su lugar?" (ver las preguntas frecuentes de SO). En esta situación, tragarse todas las excepciones es una mala práctica. No es una buena idea capturar todo y permitir que su aplicación "se entremezcle" dado el estado inconsistente en el que se encuentre. Es mejor tratar situaciones específicas en las que puede proporcionar comentarios significativos al usuario o tomar medidas significativas sobre qué salió mal. –

+9

Es una respuesta. No es una respuesta. –

2

le sugiero que lea sobre ACRA here

0

Todos los errores y excepciones se extienden desde Throwable. Al atrapar a Throwable, es posible manejar todas las condiciones inesperadas. Pero la captura de errores no tendría resultados. Usted sólo puede hacer algo bajo en el bloque catch antes de la aplicación de choque

5

puede utilizar la siguiente manera:

public class MyApplication extends Application 
{ 
    public void onCreate() 
    { 
    // Setup handler for uncaught exceptions. 
    Thread.setDefaultUncaughtExceptionHandler (new Thread.UncaughtExceptionHandler() 
    { 
     @Override 
     public void uncaughtException (Thread thread, Throwable e) 
     { 
     handleUncaughtException (thread, e); 
     } 
    }); 
    } 

// here you can handle all unexpected crashes 
    public void handleUncaughtException (Thread thread, Throwable e) 
    { 
    e.printStackTrace(); // not all Android versions will print the stack trace automatically 

    Intent intent = new Intent(); 
    intent.setAction ("com.mydomain.SEND_LOG"); // see step 5. 
    intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK); // required when starting from Application 
    startActivity (intent); 

    System.exit(1); // kill off the crashed app 
    } 
} 

que se encargará de su aplicación bloqueos inesperados, esto tomado de that answer.

Cuestiones relacionadas