Estimados instructores, una pregunta. Cual es la principal diferencia entre las excepciones tipo Exception, Checked (Verificado) y las excepciones tipo RuntimeException, Unchecked (No verificado)
Mil gracias.
Estimados instructores, una pregunta. Cual es la principal diferencia entre las excepciones tipo Exception, Checked (Verificado) y las excepciones tipo RuntimeException, Unchecked (No verificado)
Mil gracias.
Hola Edgar, espero que estés bien.
En Java - el tratamiento de errores se refiere a los procedimientos de respuesta y recuperación de condiciones de error, también el proceso compuesto de anticipación, detección y resolución con tratamiento de excepciones predefinidas.
Todas las excepciones son objetos de clase descendientes de la clase Throwable
que incluye dos excepciones predefinidas que son subclases: Error
y Exception
.
La clase Error y sus descendientes se refieren a errores que son lanzados por el tiempo de ejecución de Java. Estas excepciones nunca son lanzadas por programas de usuario, y nunca deben ser manejadas allí.
Hay dos descendientes de Exception: RuntimeException
y IOException
. En la mayoría de los casos se lanza una RuntimeException cuando un programa de usuario provoca algún error. Los programas de usuario pueden definir sus propias clases de excepción. La convención en el lenguaje Java es que las excepciones definidas por el usuario son subclases de Exception.
Las excepciones de las clases Error y RuntimeException se denominan excepciones no comprobadas. Todas las demás excepciones se denominan excepciones comprobadas.
Vale la pena recordar que para las excepciones comprobadas se requiere atrapar la excepción y manejarla, incluso si sólo se imprime que se ha producido un error. El libro de Robert C Martin - Clean Code dice "Las excepciones comprobadas pueden ser útiles a veces si estás construyendo una biblioteca crítica: necesitas atraparlas. Pero en el desarrollo general de aplicaciones, los costes de la dependencia superan a las ventajas."
En general, las excepciones Checked son aquellas en las que estás obligado a tratarla, ya sea con un bloque try-catch o incluso con un throws (relanzándola a otra ubicación). En cambio, cuando tienes excepciones Unchecked no es obligatorio tratarla, puedes tratarla sólo si quieres, si crees que es necesario para el correcto funcionamiento de tu aplicación.
Las excepciones Checked se utilizan para errores recuperables mientras que las Unchecked se utilizan para errores irrecuperables. Esto significa que cuando usted sabe que su error puede ser manejado, usted usa Excepciones Verificadas, de lo contrario use Excepciones No Verificadas.
Hay un tutorial de Oracle sobre el manejo de excepciones en Java aquí.
Mucho éxito en todo lo que te propongas y si tienes alguna duda aquí estaremos para apoyarte. ¡Vamos juntos!
Hola Edgar, como estas? Te paso la siguiente info para ver si te sirve para entender este tema.
La principal diferencia entre las excepciones tipo Exception
(verificadas o checked) y las excepciones tipo RuntimeException
(no verificadas o unchecked) radica en cómo son tratadas por el compilador y el programador.
Excepciones tipo Exception
(Checked):
Exception
que no son subclases de RuntimeException
son excepciones verificadas.throws
.Excepciones tipo RuntimeException
(Unchecked):
RuntimeException
son excepciones no verificadas.throws
.Un ejemplo de excepción verificada podría ser IOException
, que se lanza cuando ocurre algún problema de entrada/salida. El compilador requeriría que el programador maneje dicha excepción si utiliza métodos que pueden lanzarla, como cuando se trabaja con archivos.
Por otro lado, un ejemplo de excepción no verificada podría ser NullPointerException
, que se lanza cuando se intenta acceder a un objeto nulo. En este caso, no es necesario manejar explícitamente la excepción en el código, pero es importante evitar que ocurra este tipo de error mediante una programación cuidadosa.
En resumen, la diferencia clave entre las excepciones tipo Exception
(verificadas) y RuntimeException
(no verificadas) es cómo se manejan a nivel del compilador y si es necesario capturarlas o declararlas en el código. Ambos tipos de excepciones se utilizan para manejar situaciones excepcionales en un programa, pero las excepciones verificadas tienen una responsabilidad adicional de ser manejadas explícitamente en el código para garantizar un manejo adecuado de errores y excepciones.
Espero que esta info te sirve para aclarar tus dudas. Saludos y a seguir estudiando.
Si este post te ayudó, por favor, marca como solucionado ✓.