¿Cómo, al desarrollar un proyecto de tamaño mediano, identifica, crea y mantiene códigos de error?
Por mi vida, no puedo pensar en un método simple y limpio para hacerlo. Algunas de mis ideas convierten los nombres de clase y el nombre del método en una cadena entera, pero esa es una forma demasiado larga de mostrar al usuario además del hecho de que los nombres de los métodos y los nombres de las clases pueden cambiar (¡con suerte no!). Otros simplemente están utilizando un sistema de registro incremental (es decir, cada vez que creo un nuevo mensaje de error, simplemente agregue 1 al último ID de mensaje de error). Pero eso está completamente desorganizado.
Para ser más específico, estoy hablando de código de error como:
Error 401 Unauthorized.
fuente
Respuestas:
No.
Los códigos de error son un anacronismo, provienen de los viejos tiempos cuando la salida era realmente difícil y costosa, y la única forma de señalar una condición de error puede haber sido a través de un montón de luces del panel frontal:
En estos días, tenemos un manejo de excepciones maduro integrado en casi todos los idiomas principales. Úsalo. Brinde al usuario información con la que pueda trabajar; no los moleste con bla bla bla técnico, sino más bien dígales aproximadamente qué salió mal y qué pueden hacer al respecto. Para iniciar sesión, solo asigne nombres descriptivos a sus excepciones y registre el nombre. Más fácil de recordar y también más fácil de encontrar utilizando grep o herramientas de búsqueda similares.
La excepción es, por supuesto, cuando está programando situaciones donde la salida aún es difícil y costosa, como los sistemas integrados o los protocolos de red. HTTP todavía usa códigos de respuesta numéricos porque son extremadamente fáciles de analizar de manera eficiente: en algunas situaciones, leer solo el primer dígito ya puede decirle lo suficiente y puede descartar el resto del paquete.
fuente
Debe verificar cómo se organizan los códigos de error / estado en protocolos comunes como HTTP . Reservan rangos distintos para diferentes tipos de estados / errores. Esto facilita que los usuarios identifiquen un código de estado desconocido y que los desarrolladores asignen un código para un nuevo tipo de error que no se haya manejado antes.
fuente
Lo sentimos, ¿por qué usar códigos de error?
Captura la excepción, regístrate y ofrece enviar un informe si el programa no se puede recuperar .
(Suponiendo que su idioma admite excepciones).
La única información relevante que podría ayudarlo a solucionar el error es el seguimiento de la pila que no obtiene con un código de error. (También supongo que desea utilizar códigos de error para informes de error y no arrojarlos a la cara de un usuario).
fuente
Voy a asumir un contexto procesal (C). Si tiene objetos, un objeto de error suele ser mejor, ya sea una excepción o no.
Debe usar códigos de error locales para cada módulo. Para una biblioteca, puede tener un encabezado especial que enumere los códigos de error, con el número 1, 2, etc. (o -1, -2 si lo prefiere). Asegúrese de devolver siempre uno de estos códigos, por ejemplo, traducir
errno
a sus propios códigos. Si tiene varias capas de módulos, traduzca en cada paso (o defina un rango para el error más profundo, por ejemplo, los valores 1001 - 1050 son de ese otro módulo).También es importante que proporcione un medio para traducir el código en una cadena. Nunca debe informar solo el código, eso solo conduce a la frustración. En realidad, casi cualquier código en su aplicación debería venir con una función de traducción de cadenas. Por ejemplo, libc normalmente tiene
strerror
ystrsignal
, pero lamentablemente carecestrwaitstatus
.fuente