Si nos referimos a las excepciones como errores, ¿por qué no llamarlo un error en lugar de una excepción?
Si en el código se llama excepción y tan pronto como ocurre se llama error. Entonces, ¿por qué no llamarlo un error en primer lugar?
Gracias por cualquier respuesta o comentario.
Respuestas:
Bueno, es bastante simple: no todas las excepciones son errores (y de manera similar, no todos los errores se manifiestan como excepciones).
Como ejemplo de una excepción que no es un error, si está leyendo un archivo de una unidad USB y alguien saca la unidad del zócalo. Eso generará una excepción (es decir, en la mayoría de los idiomas que admiten excepciones). Pero no es un error en el código.
Por el contrario, un error puede manifestarse como un error de cálculo o algo así. Todavía obtienes una respuesta, simplemente no es la correcta.
Habiendo dicho eso, una excepción que llega hasta la cima de la pila probablemente sea un error. En mi ejemplo de USB anterior, deberías poder detectar esa excepción y presentar un buen error al usuario diciendo "No pudimos leer el archivo porque ya no está conectado". o algo. Si solo les presentas un
IOException
código de error funky, entonces eso es un error. Pero la excepción en sí no lo es.fuente
Simple y llanamente, ¡una excepción no es (siempre) un error!
Se produce una excepción (o debería ser) cuando ocurre algo excepcional. Si hay un problema con mi disco duro y no se puede escribir un archivo, eso no es un error. Esa es una falla del hardware.
Un error es generalmente el resultado de una mala programación. Si una aplicación hace algo que no se espera como resultado de un error de programación, eso es un error.
fuente
No són la misma cosa.
Un error es el comportamiento involuntario de una pieza de software: el software no hace lo que se supone que debe hacer. Los errores pueden vivir en todos los niveles de desarrollo de software, desde errores tipográficos simples hasta errores lógicos y especificaciones funcionales inadecuadas.
Una excepción , por el contrario, puede referirse a una condición inusual de un programa, que se desvía del funcionamiento normal o, más específicamente, a la construcción del lenguaje utilizada para señalar y manejar tales condiciones.
El hecho de que ocurra una excepción puede ser un signo de error, pero a menudo no lo es. Por ejemplo, una aplicación que debe descargar un documento de una URL y procesarla localmente puede generar una excepción cuando el servidor remoto está inactivo: la aplicación se desvía del funcionamiento normal (no puede descargar y procesar el documento), pero si maneja la excepción correctamente y se recupera, entonces no hay error.
Por el contrario, la presencia de un error no necesariamente se manifiesta como una excepción. Una aplicación puede descartar silenciosamente los datos que ingrese en lugar de almacenarlos en su base de datos; no se produce ninguna excepción, pero sigue siendo un error.
fuente
Las excepciones y los errores no están relacionados en absoluto. Claro, a veces lanzas una excepción y significa un error. Pero a veces solo significa una circunstancia excepcional e inusual, que no es necesariamente un error en el programa. Especialmente en un lenguaje feliz de excepciones como Java, donde cada operación estándar y su perro arroja alrededor de cinco excepciones diferentes, por ejemplo, el archivo de apertura falló, el archivo de lectura falló, etc.
fuente
Las excepciones no siempre están relacionadas con errores. Piense en ello como algo que podría salir mal con lo que está haciendo.
Un ejemplo que viene a la mente es InetAddress.getByName (), que se usa para resolver un nombre de dominio. Si algo sucede y se produce una UnknownHostException, no es realmente un problema de código.
fuente
Un error de software es el término común utilizado para describir un error, falla, error, falla o falla en un programa o sistema informático que produce un resultado incorrecto o inesperado, o hace que se comporte de manera no intencionada. Incluso podría ser un error de ortografía en una etiqueta.
Las excepciones son diferentes a los errores. Cada tipo de excepción (infracción de acceso, desbordamiento de pila, etc.) se puede elevar a un depurador como una excepción de "primera oportunidad" o "segunda oportunidad". Las excepciones de primera oportunidad son, por definición, no fatales a menos que no se manejen adecuadamente con un controlador de errores, en cuyo punto se vuelven a generar como una excepción de segunda oportunidad (que solo un depurador puede manejar).
Si ningún depurador maneja una excepción de segunda oportunidad, la aplicación se cierra.
fuente
Usted podría legítimamente plantear una excepción usted mismo, con suerte nunca introduciría un error a propósito.
fuente
Todas las excepciones no son errores. Puede ser un tema de debate que todos los errores son excepciones o no.
Podemos decir que las excepciones son los eventos que no forman parte del flujo de aplicación normal o esperado. Estos eventos pueden ser independientes de cómo se escribe el código donde, como error, es esencialmente el resultado de un código incorrecto (como un cálculo incorrecto).
Aquí hay un ejemplo de cómo no manejar una excepción puede ser un error.
Supongamos que hay un programa que escribe algunos datos en un dispositivo de almacenamiento externo. Mientras escribía, el dispositivo de almacenamiento externo se desconectó, se bloqueó o puede destruirse (por cualquier razón). Ahora, este es un caso excepcional, independientemente de que el lenguaje de programación admita un manejo excepcional o no, si el programa se bloquea o se comporta mal debido a este evento, es un error. (El usuario final puede no tener idea de lo que sucedió. También es muy desagradable) . Pero si el programa aborta el proceso con gracia, notifique al usuario (en otras palabras, maneje la excepción), esto claramente no es un error.
Los lenguajes de programación try catch machanism brindados son esencialmente una herramienta para facilitar nuestra salida para manejar eventos inesperados.
fuente
Sinopsis : Las excepciones son evidencia de malos resultados, los errores son (algunas de las) causas de malos resultados. El problema (a resolver) no es la excepción, el problema es lo que causó la excepción.
Resonación: un error es un defecto en el diseño o implementación de un producto (no limitado al software). Por ejemplo, no usar un relé con la capacidad adecuada (tiempo / sensibilidad / confiabilidad / capacidad) debido a especificaciones incorrectas o un simple error de construcción. Una excepción es una desviación del mundo real / tiempo de ejecución del comportamiento predicho (¿me atrevo a decir 'esperado'?), Por ejemplo, la pérdida de control de un vehículo mientras conduce.
Claramente, un error puede causar una excepción ya que el ejemplo en 1) podría conducir al ejemplo en 2). Pero no todas las excepciones serían causadas por errores, por ejemplo, pérdida de control de un vehículo porque el operador sufrió un derrame cerebral.
fuente
Dado que esta pregunta ha sido reabierta para una recompensa, permítanme mencionar mi artículo de CUJ de 2003 titulado "¿Una excepción o un error?", Que parece abordar exactamente la pregunta del OP.
Básicamente, el artículo define los términos "error" y "excepción" (dando ejemplos), y propone estrategias para tratar con cada uno.
El artículo propone no "manejar" los errores, sino marcarlos con afirmaciones. En contraste, las verdaderas excepciones requieren manejo a través del código (posiblemente lanzando / atrapando excepciones).
El punto principal es que los errores requieren exactamente la estrategia opuesta a las excepciones.
El artículo mencionado ya está disponible en Dr.Dobb's en: http://www.drdobbs.com/an-exception-or-a-bug/184401686
fuente