Excepción vs error
El comportamiento inesperado está destinado a ocurrir cuando se ejecuta un programa. Esto podría deberse a excepciones o errores. Las excepciones son eventos, que pueden perturbar el flujo normal del programa. Los errores son condiciones que pueden considerarse irrecuperables. Las excepciones están relacionadas principalmente con la aplicación, mientras que los errores están relacionados con el sistema en el que se ejecuta el programa.
Qué es una excepción?
La excepción es un evento, que puede perturbar el flujo normal del programa. La excepción del nombre proviene de "evento excepcional". Lanzar una excepción es el proceso de crear un objeto de excepción y entregarlo al sistema de tiempo de ejecución. El objeto de excepción se crea mediante el método en el que se produjo la excepción. El objeto de excepción contiene información útil, como el tipo y la descripción de la excepción. Cuando el sistema de tiempo de ejecución recibe el objeto de excepción, intentará encontrar a alguien que lo maneje dentro de la pila de llamadas atravesándolo en el orden inverso (en el que se llamaron los métodos). La pila de llamadas es la lista ordenada de métodos, que se llamaron antes del método en el que se produjo la excepción. El sistema de ejecución es exitoso si encuentra un método con un controlador de excepciones. El controlador de excepciones es un bloque de código que puede manejar oficialmente dicha excepción. Si el sistema de tiempo de ejecución encuentra un controlador adecuado (es decir, el tipo de excepción coincide con el tipo que se puede manejar), pasará el objeto de excepción al controlador. Esto se llama atrapar la excepción. Sin embargo, si la excepción no puede ser manejada, el programa terminará. En Java, las excepciones se heredan de la "clase de Throwable". NullPointerException y ArrayIndexOutOfBoundsException son dos excepciones comunes en Java.
Que es un error?
Un error es una condición que puede considerarse irrecuperable, como que el programa requiera una cantidad de memoria mayor que la disponible. Estos errores no pueden ser manejados en tiempo de ejecución. Si ocurre un error, el programa terminará. En Java, los errores heredan de la clase Throwable. Los errores por lo general representan problemas graves que el programador (o la aplicación) no deben intentar detectar. Los errores son simplemente condiciones anormales, que nunca se espera que ocurran en circunstancias normales y, por lo tanto, nunca se prevén. Por ejemplo, OutOfMemoryError, StackOverflowError y ThreadDead son tales errores. Los métodos nunca deben tener controladores para errores.
¿Cuál es la diferencia entre excepción y error??
Tanto los errores como las excepciones son eventos no deseados durante la ejecución de un programa. Sin embargo, tienen diferencias clave. El programador puede prever excepciones, mientras que un error es difícil de prever. Las excepciones pueden ser marcadas o desmarcadas. Pero los errores siempre están sin marcar. Las excepciones suelen indicar un error causado por el programador. Sin embargo, los errores se producen debido a un error del sistema o un uso inadecuado de un recurso. Por lo tanto, las excepciones deben manejarse a nivel de la aplicación, mientras que los errores deben ser resueltos a nivel del sistema (solo si es posible). Después de manejar una excepción, se le garantiza volver al flujo normal del programa. Pero incluso si se detecta un error, el programador puede no saber cómo manejarlo en primer lugar. A diferencia del manejo tradicional de errores, las excepciones permiten separar el código de manejo de errores del código regular.