viernes, 14 de septiembre de 2012

Códigos de error al fallar el hardware.


En programación, los códigos de error son mensajes numerados que corresponden a errores en una aplicación específica. Se usan a menudo para identificar fallos de hardware, software o una entrada de datos incorrecta del usuario, en lenguajes de programación que carecen de manejo de excepciones, aunque a veces se usan conjuntamente a ellas. Los códigos de error no deben confundirse con los valores de retorno, aunque ambos se usen conjuntamente en el manejo de errores. Algunos de los códigos de error más severos visibles al usuario son los códigos de error en la pantalla azul de la muerte de Windows.

Códigos de error y manejo de excepciones:

Los códigos de error están lentamente desapareciendo según los nuevos lenguajes de programación orientados a objetos los remplazan con excepciones. Las excepciones tienen la ventaja de ser tratadas con bloques específicos de código, separados del resto. Aunque se considera una mala práctica en la metodología que usa códigos de error y valores de retorno no comprobar los valores de retorno para mirar si la función falló, a menudo los programadores no comprueban si hubo algún error. Esta negligencia puede causar efectos no deseados, puesto que errores ignorados pueden causar fallos más severos posteriormente en el programa.
La implementación de las excepciones en cambio, al separar la gestión de errores de la lógica del programa, los hace más fáciles de escribir y entender, puesto que un único código de manejo de errores puede gestionar errores de múltiples funciones. La gestión de excepciones hace también el código más legible que las implementaciones con códigos de error, puesto que la gestión de excepciones no rompe la lógica del programa con múltiples comprobaciones de errores.

Errores comunes:

Si estás intentando correr un programa bastante antiguo en sistemas con una versión reciente de libc, puedes encontrarte con las siguientes situaciones dependiendo de la versión:
El programa funciona pero genera un warning:
Incorrectly built binary which accesses errno or h_errno directly. Needs to be fixed.

El programa no funciona, dando el error
symbol errno, version GLIBC_2.0 not defined in file libc.so.6 with link time reference

Error está definido por el estándar ISO C como un lvalue modificable de tipo entero, y no debe declararse explícitamente. Era común en C tradicional declarar errno manualmente (extern int errno;) en vez de incluir <errno.h>. Esto ya no funciona en las últimas versiones de libc. En tales situaciones, hay que modificar el código fuente para reemplazar todos los extern int errno; con el include #include <errno.h>. No obstante, en versiones muy antiguas de sistemas UNIX, puede no estar disponible <errno.h> y necesitarse la declaración.

No hay comentarios:

Publicar un comentario