¿Cómo asigna códigos de error?

12

¿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 eso es demasiado largo para mostrar al usuario además del hecho de que los nombres de los métodos y los nombres de las clases pueden cambiar (¡espero que no!). Otros simplemente están usando un sistema de registro incremental (es decir, siempre que cree un nuevo mensaje de error, simplemente agregue 1 a la última identificación del mensaje de error). Pero eso es completamente desorganizado.

Para ser más específico, estoy hablando de un código de error como:

Error 401 Unauthorized.

    
pregunta ahodder 02.08.2011 - 22:05

4 respuestas

16

No.

Los códigos de error son un anacronismo, se derivan de días pasados cuando la salida fue 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 incorporado en casi todos los lenguajes principales. Utilízalo Proporcione al usuario información con la que pueda trabajar; no los moleste con el técnico bla-bla, sino que más bien dígales lo que salió mal y lo que pueden hacer al respecto. Para el registro, simplemente dé a sus excepciones nombres descriptivos y registre el nombre. Más fácil de recordar y también más fácil de encontrar con grep o herramientas de búsqueda similares.

La excepción es, por supuesto, cuando estás programando para situaciones en las que la salida sigue siendo difícil y costosa, como sistemas integrados o 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 puede ya indicar lo suficiente y puede descartar el resto del paquete.

    
respondido por el tdammers 02.08.2011 - 22:27
6

Debería ver cómo se organizan los códigos de error / estado en protocolos comunes como HTTP . Se reservan rangos distintos para diferentes tipos de estados / errores. Esto hace que sea más fácil para los usuarios identificar un código de estado desconocido y para que los desarrolladores asignen un código para un nuevo tipo de error que no se ha manejado anteriormente.

    
respondido por el Péter Török 02.08.2011 - 22:19
3

Lo sentimos, ¿por qué usar códigos de error?
Capture la excepción, inicie sesión y ofrezca enviar un informe si el programa no se puede recuperar .

(Suponiendo que su idioma admite excepciones.)

La única información relevante que puede 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 los informes de errores y no para ponerlos en la cara de un usuario).

    
respondido por el Dan 02.08.2011 - 22:17
2

Voy a asumir un contexto de procedimiento (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 enumera 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, traduce errno en tus propios códigos. Si tiene varias capas de módulos, traduzca en cada paso (o predefina 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 debes reportar solo el código, eso solo conduce a la frustración. En realidad, casi cualquier código en su aplicación debe venir con una función de traducción de cadenas. Por ejemplo, libc normalmente tiene strerror y strsignal , pero lamentablemente carece de strwaitstatus .

    
respondido por el Per Johansson 07.02.2012 - 22:47

Lea otras preguntas en las etiquetas