Pregunta

En marcos de registro como log4j & amp; log4net tiene la capacidad de registrar varios niveles de información. La mayoría de los niveles tienen intenciones obvias (como lo que es un registro de "Depuración" frente a un "Error"). Sin embargo, una cosa con la que siempre he sido tímido fue clasificar mi registro como "Fatal".

¿Qué tipo de errores son tan graves que deberían clasificarse como fatales? Si bien esto se basa en mayúsculas y minúsculas, ¿cuáles son algunas de las reglas generales que utiliza al decidir entre registrar una excepción como fatal o simplemente por error?

¿Fue útil?

Solución

Considero que los errores fatales son cuando su aplicación no puede hacer más trabajo útil. Los errores no fatales son cuando hay un problema, pero su aplicación aún puede seguir funcionando, incluso a un nivel reducido de funcionalidad o rendimiento.

Ejemplos de errores fatales incluyen:

  • Quedando sin espacio en disco en el dispositivo de registro y se le requiere que siga registrando.
  • Pérdida total de conectividad de red en una aplicación cliente.
  • Falta información de configuración si no se puede utilizar ningún valor predeterminado.

Los errores no fatales incluirían:

  • Un servidor donde una sola sesión falla por alguna razón, pero aún puede dar servicio a otros clientes.
  • Un error intermitente, como una sesión perdida, si se puede establecer una nueva sesión.
  • Falta información de configuración si se puede usar un valor predeterminado.

Otros consejos

Un error es Fatal si falta algo o se produce una situación en la que la aplicación simplemente no puede continuar. Los ejemplos posibles son un archivo de configuración requerido que falta o cuando una excepción 'aparece' y es atrapada por un controlador de excepciones no controlado

Usaría fatal si mi próximo paso es que la aplicación finalice, o simplemente no realice ningún trabajo posterior. Si la aplicación es parte de un lote o hay varios procesos en ejecución, esto puede ser útil para rastrear lo que sucedió.

Si existe la posibilidad de recuperación (por ejemplo, pérdida de conexión de red con reintentos por un tiempo), no usaría un fatal.

Si tengo varios subprocesos de servicio activados por un subproceso principal y uno de ellos falla debido a alguna entrada incorrecta pero la aplicación aún puede atender nuevas solicitudes, no lo considero fatal.

Para que esta respuesta sea breve y dulce, si su aplicación falla, consideraría que es fatal. Si no puede conectarse a un recurso importante, como una base de datos o un servicio requerido, sería fatal. En general, diría que si evita que su aplicación se ejecute correctamente y afecte al usuario, la clasificaría como un error fatal.

Pero la forma más importante de clasificar los errores es seguir consistentemente una regla general como la regla 69 en Estándares de codificación C ++ :

  

" Desarrolle una política práctica, coherente y racional de manejo de errores al inicio del diseño, y luego cúmplala. "

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top