Diferencia entre la excepción marcada y la excepción de tiempo de ejecución

Diferencia entre la excepción marcada y la excepción de tiempo de ejecución
Diferencia entre la excepción marcada y la excepción de tiempo de ejecución

Video: Diferencia entre la excepción marcada y la excepción de tiempo de ejecución

Video: Diferencia entre la excepción marcada y la excepción de tiempo de ejecución
Video: TE EXPLICO por qué LA VELOCIDAD ES RELATIVA ⚾️ 2024, Mes de julio
Anonim

Excepción comprobada frente a Excepción de tiempo de ejecución

Las excepciones son tipos especiales de eventos que pueden perturbar el flujo normal del programa. El nombre excepción 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. 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). El sistema de tiempo de ejecución tiene éxito 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, pasará el objeto de excepción al controlador. Esto se llama capturar la excepción. Sin embargo, si no se puede manejar la excepción, el programa terminará. En Java, las excepciones se heredan de la clase Throwable. Las excepciones marcadas son excepciones en las que el compilador impone el manejo. Las excepciones de tiempo de ejecución son un tipo de excepciones que el compilador no comprueba.

¿Qué es una excepción marcada?

Las excepciones comprobadas son objetos de la clase java.lang.exception o sus subclases (excepto java.lang. RuntimeException y sus subclases). Las excepciones marcadas se "marcan" en tiempo de compilación. Eso significa que el programador debe capturar o lanzar estas excepciones, o la compilación se quejaría (causando un error de compilación). Por esta razón, los programadores conocen muy bien muchas excepciones comprobadas. Por ejemplo, la IOException y sus subclases son excepciones verificadas, y cada vez que el programador trata de acceder o modificar un archivo, el compilador verifica para asegurarse de que el programador se ocupe de todas las posibles IOExceptions.

¿Qué es una excepción de tiempo de ejecución?

Las excepciones de tiempo de ejecución consisten en java.lang. RuntimeException y todas sus subclases. Hablando teóricamente, tienen el mismo propósito que las excepciones comprobadas, y pueden lanzarse o manejarse como una excepción verificada, pero el compilador no impone su manejo. Por lo tanto, las excepciones de tiempo de ejecución pertenecen a la familia de las excepciones no comprobadas. NullPointerException, NumberFormatEception, ClassCastException y ArrayIndexOutOfBoundsException son excepciones de tiempo de ejecución comunes en Java.

¿Cuál es la diferencia entre Excepción comprobada y Excepción de tiempo de ejecución?

Aunque tanto las excepciones comprobadas como las excepciones en tiempo de ejecución son ocurrencias no deseadas durante la ejecución de un programa, tienen sus diferencias. El compilador aplica el control de excepciones comprobado, pero no las excepciones de tiempo de ejecución. Por lo tanto, las excepciones verificadas deben lanzarse o manejarse para que el código se compile, pero no existe tal requisito con respecto a las excepciones de tiempo de ejecución. En consecuencia, las excepciones en tiempo de ejecución pertenecen a la categoría de excepciones no comprobadas junto con los errores.

La desventaja de las excepciones marcadas es que el programador tiene que manejarlo aunque no sepa cómo hacerlo. Por lo tanto, si el programador lanza una nueva excepción sin envolver la original, se perderá el seguimiento de la pila que pertenece a la excepción original. Aquí es donde las excepciones de tiempo de ejecución son útiles. Debido a que todas las excepciones de tiempo de ejecución se pueden manejar en un solo lugar, los programadores pueden escribir menos cantidad de código. Por otro lado, dado que se deben capturar las excepciones verificadas, no hay sorpresa para el programador. Ella siempre sabrá qué excepción comprobada podría ser lanzada por un determinado método. Al contrario de esto, se pueden lanzar varias excepciones de tiempo de ejecución sin el conocimiento del programador.

Recomendado: