tratar negocio las lanzar introduccion excepciones controladas conclusion como caracteristicas java android exception printstacktrace

java - negocio - ¿Es una mala idea usar printStackTrace() en las excepciones de Android?



introduccion excepciones en java (5)

¿Es una mala idea usar printStackTrace () en excepciones de Android como esta?

} catch (Exception e) { e.printStackTrace(); }


Creo que esto es lo que necesitas:

catch (Exception e) { Log.e(TAG,Log.getStackTraceString(e)); }


La pregunta es: ¿es útil imprimir en el seguimiento de la pila en un contexto de aplicación de Andriod? ¿La salida estándar será visible en el tiempo de ejecución? ¿Alguien se preocupará por eso?

Mi punto es que, si nadie va a verificar el resultado estándar y se preocupa por corregir el error, la llamada a este método es un código muerto, y componer el mensaje stacktrace es un gasto inútil. Si solo lo necesita para la depuración en el desarrollo, puede establecer una constante global accesible y verificarlo en tiempo de ejecución:

} catch (Exception e) { if(com.foo.MyEnvironmentConstants.isDebugging()) { e.printStackTrace(); } //else do noting }


Sí, es una mala idea. En su lugar, debe utilizar la clase de registro incorporada de Android diseñada específicamente para estos fines: http://developer.android.com/reference/android/util/Log.html

Le da opciones para registrar mensajes de depuración, advertencias, errores, etc.

Errores de registro con:

Log.e(TAG, "message", e) donde el mensaje puede ser una explicación de lo que se estaba intentando cuando se lanzó la excepción

o simplemente Log.e(TAG, e) si no desea proporcionar ningún mensaje para el contexto

A continuación, puede hacer clic en la consola de registro en la parte inferior mientras ejecuta su código y buscarlo fácilmente utilizando el TAG o el tipo de mensaje de registro como un filtro


Sí. printStackTrace() es conveniente pero desaconsejable, especialmente en Android, donde es visible a través de logcat pero se registra en un nivel no especificado y sin un mensaje adecuado. En cambio, la forma correcta de registrar una excepción es ...

Log.e(TAG, "Explanation of what was being attempted", e);

Tenga en cuenta que la excepción se utiliza como un tercer parámetro, no adjuntado al parámetro del mensaje. Log maneja los detalles por usted, imprimiendo su mensaje (que le da el contexto de lo que estaba tratando de hacer en su código) y el mensaje de la Exception , así como su rastro de pila.


printStackTrace() usar printStackTrace() , usar un sistema de registro y su soporte de excepciones.

log.log(Level.SEVERE, "Uncaught exception", e);

Entonces, si desea cambiar cómo se maneja el registro, es mucho más fácil.