fbpx
Wikipedia

Código de error

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.

Ejemplos

En lenguajes de programación sin manejo de excepciones (como el lenguaje de programación C), los códigos de error suelen almacenarse en variables globales con nombres como errno. Los códigos de error se identifican por un número, indicando cada uno un motivo de fallo. En una aplicación que use códigos de error, cada función suele tener un valor de retorno que indica que se produjo un fallo. A continuación se puede comprobar el valor disponible en la variable global para determinar el motivo que hizo fallar a la función. Por ejemplo, para indicar que falló la apertura de un archivo, una función suele establecer la variable global al código de error indicando el motivo del fallo y devolver un manipulador de fichero no válido, tal y como muestra el siguiente ejemplo:

/* intentamos abrir ''archivo'' para lectura*/ FILE *pFichero = fopen("archivo", "r"); /* if file cannot be opened, print error number and error string */ if(pFichero == NULL)  printf("No se puede abrir el archivo, error nº %i, descripción: %s\n", errno, strerror(errno)); 

Puesto que los códigos de error acostumbran a ser variables globales, pueden ser leídas o escritas desde cualquier porción del programa. Como con cualquier variable global, esto es un problema en entornos multihilo, puesto que la variable puede ser modificada por más de un hilo, causando una condición de carrera. Para arreglar este problema, POSIX establece que errno debe ser una variable local al hilo[cita requerida].

POST <SOCURCE LANG"C">

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 reemplazan 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 se intenta correr un programa bastante antiguo en sistemas con una versión reciente de libc, puede encontrarse 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 

errno 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.

Véase también

Enlaces externos

  • "Errors: errno in UNIX programs" por Chris Herborth
  • "Exception Handling in C without C++" por Tom Schotland y Peter Petersen
  • "Error codes or Exceptions? Why is Reliable Software so Hard?" por Damien Katz
  • Funciones de manejo de errores de Windows

código, error, programación, códigos, error, mensajes, numerados, corresponden, errores, aplicación, específica, usan, menudo, para, identificar, fallos, hardware, software, entrada, datos, incorrecta, usuario, lenguajes, programación, carecen, manejo, excepci. En programacion los codigos de error son mensajes numerados que corresponden a errores en una aplicacion especifica Se usan a menudo para identificar fallos de hardware software o una entrada de datos incorrecta del usuario en lenguajes de programacion que carecen de manejo de excepciones aunque a veces se usan conjuntamente a ellas Los codigos de error no deben confundirse con los valores de retorno aunque ambos se usen conjuntamente en el manejo de errores Algunos de los codigos de error mas severos visibles al usuario son los codigos de error en la pantalla azul de la muerte de Windows Indice 1 Ejemplos 2 Codigos de error y manejo de excepciones 3 Errores comunes 4 Vease tambien 5 Enlaces externosEjemplos EditarEn lenguajes de programacion sin manejo de excepciones como el lenguaje de programacion C los codigos de error suelen almacenarse en variables globales con nombres como errno Los codigos de error se identifican por un numero indicando cada uno un motivo de fallo En una aplicacion que use codigos de error cada funcion suele tener un valor de retorno que indica que se produjo un fallo A continuacion se puede comprobar el valor disponible en la variable global para determinar el motivo que hizo fallar a la funcion Por ejemplo para indicar que fallo la apertura de un archivo una funcion suele establecer la variable global al codigo de error indicando el motivo del fallo y devolver un manipulador de fichero no valido tal y como muestra el siguiente ejemplo intentamos abrir archivo para lectura FILE pFichero fopen archivo r if file cannot be opened print error number and error string if pFichero NULL printf No se puede abrir el archivo error nº i descripcion s n errno strerror errno Puesto que los codigos de error acostumbran a ser variables globales pueden ser leidas o escritas desde cualquier porcion del programa Como con cualquier variable global esto es un problema en entornos multihilo puesto que la variable puede ser modificada por mas de un hilo causando una condicion de carrera Para arreglar este problema POSIX establece que errno debe ser una variable local al hilo cita requerida POST lt SOCURCE LANG C gt Codigos de error y manejo de excepciones EditarLos codigos de error estan lentamente desapareciendo segun los nuevos lenguajes de programacion orientados a objetos los reemplazan con excepciones Las excepciones tienen la ventaja de ser tratadas con bloques especificos de codigo separados del resto Aunque se considera una mala practica en la metodologia que usa codigos de error y valores de retorno no comprobar los valores de retorno para mirar si la funcion fallo a menudo los programadores no comprueban si hubo algun error Esta negligencia puede causar efectos no deseados puesto que errores ignorados pueden causar fallos mas severos posteriormente en el programa La implementacion de las excepciones en cambio al separar la gestion de errores de la logica del programa los hace mas faciles de escribir y entender puesto que un unico codigo de manejo de errores puede gestionar errores de multiples funciones La gestion de excepciones hace tambien el codigo mas legible que las implementaciones con codigos de error puesto que la gestion de excepciones no rompe la logica del programa con multiples comprobaciones de errores Errores comunes EditarSi se intenta correr un programa bastante antiguo en sistemas con una version reciente de libc puede encontrarse con las siguientes situaciones dependiendo de la version 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 errorsymbol errno version GLIBC 2 0 not defined in file libc so 6 with link time reference errno esta definido por el estandar ISO C como un lvalue modificable de tipo entero y no debe declararse explicitamente Era comun en C tradicional declarar errno manualmente extern int errno en vez de incluir lt errno h gt Esto ya no funciona en las ultimas versiones de libc En tales situaciones hay que modificar el codigo fuente para reemplazar todos los extern int errno con el include include lt errno h gt No obstante en versiones muy antiguas de sistemas UNIX puede no estar disponible lt errno h gt y necesitarse la declaracion Vease tambien EditarLast Error Abortar informatica Programacion Orientada a Aspectos Error de software Analisis estatico de programasEnlaces externos Editar Errors errno in UNIX programs por Chris Herborth Exception Handling in C without C por Tom Schotland y Peter Petersen Error codes or Exceptions Why is Reliable Software so Hard por Damien Katz Funciones de manejo de errores de Windows Obtenido de https es wikipedia org w index php title Codigo de error amp oldid 125820535, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos