variable try practices how handling golang exceptions error code catch best user-interface error-handling custom-errors

user interface - try - ¿Qué tan detallado deben ser los mensajes de error?



throw error in golang (7)

Debe comunicar lo que sucedió, y cuáles son las opciones del usuario, en la menor cantidad de palabras posible. Cuanto más largo es el mensaje de error, es menos probable que el usuario lo lea. Por la misma razón, los mensajes de error cortos son crípticos e inútiles. Hay un punto dulce en términos de longitud, y es diferente para cada situación.

Demasiado corto:

Entrada inválida.

Demasiado largo:

Ingrese una dirección IP correctamente formateada, como 192.168.0.1. Una dirección IP es un número utilizado para identificar su computadora en una red.

Solo bien:

Por favor ingrese una dirección IP válida.

En lo que se refiere al código inflado, si un pequeño código adicional evitará que un usuario llame al soporte o se sienta frustrado, entonces es una buena inversión.

Me preguntaba cuál era el consenso general sobre los mensajes de error. ¿Cuán detallado deberían ser?

Trabajé en proyectos donde había un mensaje de error diferente para ingresar un número que era demasiado grande, demasiado pequeño, tenía un decimal, una cadena, etc. Eso fue bastante bueno para el usuario, ya que sabían exactamente dónde salieron las cosas. , pero el código de manejo de errores comenzó a rivalizar con la lógica empresarial real en tamaño, y comenzó a desarrollar algunos de sus propios errores.

Por otro lado, trabajé en un proyecto en el que obtendría errores muy genéricos, como

COMPILA FALLÓ LA RAZÓN 3

De más está decir que fue casi completamente inútil ya que el motivo 3 resultó ser un error de enlace.

Entonces, ¿dónde está el término medio? ¿Cómo puedo saber si agregué suficientes mensajes de error descriptivos? ¿Cómo sé si el usuario podrá entender dónde se equivocaron?


Erraría por el lado de más detalles, pero creo que respondiste tu propia pregunta. Para evitar la saturación en el código, proporcione información útil en el código / mensaje de error, pero puede proporcionar más detalles en la documentación tal vez o con los archivos de ayuda o las preguntas frecuentes.

tener muy poca información es peor en mi opinión.

Si está utilizando un lenguaje con gran introspección u otras capacidades, un registro con la línea que falló una verificación sería útil. Luego, el usuario puede reenviar a soporte técnico u obtener información detallada y esto no es un exceso de código adicional, sino que usa su propio código para proporcionar información.


Hay dos públicos objetivo posibles para un mensaje de error, el usuario y el desarrollador.

En general, uno debe tener el mensaje dirigido al usuario.

o cuál es la causa del problema
o por qué el programa no puede evitar el problema
o lo que el usuario puede hacer para evitar el problema.
o cómo informar el problema.

Si el problema se debe informar, el informe debe incluir la mayor cantidad posible de información sobre el contexto del programa.

o nombre del módulo
o nombre de la función
o número de línea
o variables de interés en el área general del problema
o tal vez incluso un basurero.

Apunte a la audiencia correcta.


Hay dos tipos de mensajes de error: los que verá el usuario y los que verá el programador.

"¿Cómo puedo saber si el usuario podrá entender dónde se equivocaron?" Supongo que esos mensajes solo los verá el usuario, y no uno muy técnico, y COMPILE FAILED REASON 3 no es un mensaje de error típico del usuario final. Es algo que el programador verá (el usuario no suele compilar cosas).

Entonces, si es el usuario quien lo verá:

  1. Proporcione un breve "Este es un mensaje de error" ("Ops! ¡Algo salió mal!", Etc.)
  2. Proporcione una pequeña descripción genérica del error ("Parece que el sitio al que intenta conectarse no está disponible" / "Parece que no tiene suficientes permisos para realizar la tarea XYZ" / etc.)
  3. Agregue un botón "Detalles >>", en caso de que su usuario entienda bien las computadoras, incluida información detallada (rastreo de pila de excepción, código de error, etc.)

Finalmente, proporcione algunos comandos simples y comprensibles para el usuario ("Intentar de nuevo", "Cancelar", etc.)


La verdadera pregunta sobre los mensajes de error es si deberían mostrarse. Se presentan muchos mensajes de error a un usuario, pero NO hay forma de que los corrijan.

Siempre que haya una forma de corregir el error, brinde suficiente información al usuario que le permita corregirlo por sí mismo. Si no pueden corregirlo por sí mismos, ¿hay alguna razón para explicarles el motivo técnico del bloqueo? No solo inicie sesión en un archivo para solucionarlo más tarde.


Los mensajes de error deben ser detallados, pero claros. Esto se puede lograr combinando mensajes de error de múltiples niveles:

Failed to save the image Permission denied: /foo.jpg

Aquí tenemos dos niveles. Puede haber más. Primero contamos el panorama general y luego contamos los detalles. El orden es tal que primero tenemos la parte que más entienden y luego la parte que menos personas entienden, pero ambas aún pueden ser visibles.

Además, podría haber una sugerencia de corrección.


Tan detallado como necesitan ser;)

Sé que suena como una respuesta inteligente pero gran parte de esto depende de su público objetivo y del tipo de error. Para los errores causados ​​por la entrada de usuario no válida, puede mostrarles lo que constituye una entrada válida. Para los errores que el usuario no puede controlar, un mensaje genérico de tipo "estamos trabajando en ello" podría hacer.

Estoy de acuerdo con los comentarios de Jon B con respecto a la longitud también.