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