Saltar al contenido principal

Mensajes de usuario y logs

Cuando un programa en Java gestiona errores, puede generar tres tipos de mensajes:

  • Mensajes de las excepciones: Explicación interna del error.
  • Mensajes al usuario: Información amigable para el usuario.
  • Logs: Registro detallado para análisis y depuración.

Estos mensajes no deberían ser los mismos. Cada tipo de mensaje tiene un propósito distinto, y mezclarlos puede ser problemático.

Mensajes de las excepciones

Estos son proporcionados por las excepciones (getMessage() o printStackTrace()). Generalmente son técnicos y poco amigables para el usuario. Se usan internamente para depuración y análisis del error.

try {
int resultado = 10 / 0;
} catch (ArithmeticException e) {
System.out.println(e.getMessage()); // " / by zero "
}

Este mensaje no es claro para un usuario final.

Mensajes al usuario

Deben ser claros y amigables. Nunca deben exponer detalles internos como trazas de pila o nombres de clases. Ayudan al usuario a entender el problema y cómo resolverlo.

try {
int resultado = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("Error: No puedes dividir por cero. Por favor, introduce otro valor.");
}

Logs

Registran información útil para depuración y mantenimiento. Pueden contener el mensaje de la excepción, pero generalmente con más contexto. No se muestran al usuario final, sino que se guardan en un archivo o sistema de logs.

import java.util.logging.Logger;

public class EjemploLogs {
private static final Logger logger = Logger.getLogger(EjemploLogs.class.getName());

public static void main(String[] args) {
try {
int resultado = 10 / 0;
} catch (ArithmeticException e) {
logger.severe("Error crítico: " + e.getMessage()); // Log interno
System.out.println("Error: Operación no válida. Contacta con el soporte.");
}
}
}

Salida para el usuario:

Error: Operación no válida. Contacta con el soporte.

Salida en el archivo de log:

SEVERE: Error crítico: / by zero