En mi solicitud, estoy corriendo mi código a través PMD.It me muestra este mensaje:Evita printStackTrace(); utilizar una llamada registrador lugar
- Evitar printStackTrace(); use una llamada de registrador en su lugar.
¿Qué significa eso?
En mi solicitud, estoy corriendo mi código a través PMD.It me muestra este mensaje:Evita printStackTrace(); utilizar una llamada registrador lugar
- Evitar printStackTrace(); use una llamada de registrador en su lugar.
¿Qué significa eso?
significa que debe usar marco de registro como logback o log4j y en lugar de excepciones Impresión directa:
e.printStackTrace();
se les debe iniciar sesión utilizando la API esta marcos:
log.error("Ops!", e);
marcos de registro le dan mucha flexibilidad, por ejemplo puede elegir si desea iniciar sesión en la consola o archivo, o tal vez omitir algunos mensajes si considera que ya no son relevantes en algún entorno.
Si llama al printStackTrace()
con una excepción, el rastreo se escribe en System.err
y es difícil enrutarlo a otra parte (o filtrarlo). En lugar de hacer esto, se le aconseja usar un marco de trabajo de registro (o un marco alrededor de múltiples marcos de registro, como Apache Commons Logging) y registrar la excepción usando ese marco (por ejemplo, logger.error("some exception message", e)
).
Hacer eso le permite:
una producción debe utilizar una de las muchas alternativas de registro (por ejemplo, log4j, logback, java.util.logging) para informar errores y otros diagnósticos. Esto tiene una serie de ventajas:
Por el contrario, si solo usa printStackTrace, el usuario final o implementador tiene poco o ningún control, y los mensajes de registro pueden perderse o mostrarse al usuario final en circunstancias inapropiadas.(Y nada aterroriza a un usuario tímido más que un seguimiento de pila aleatorio).
Casi todos los marcos de registro proporcionan un método por el cual podemos pasar el objeto arrojado junto con un mensaje. Me gusta:
public trace(Marker marker, String msg, Throwable t);
Imprimen la pila de objetos arrojables.
En Simple, e.printStackTrace() no es una buena práctica, ya que simplemente imprime el seguimiento de la pila en un error estándar. Debido a esto, no puedes controlar a dónde va esta salida.
Acabo de decir gracias aquí por valiosos comentarios en otro lugar ;-) – GhostCat