en este tutorial de excepciones de Java, aprenda qué es una excepción en Java, Qué es una excepción marcada y cómo es diferente de una excepción no marcada. También aprenderemos algunas prácticas recomendadas sobre las excepciones Verificadas en Java.
Table of Contents1. What is an exception in Java?2. Checked vs unchecked exceptions in Java3. Java exception handling best practices
¿Qué es una excepción en Java?
«una excepción es un evento inesperado que ocurre durante la ejecución de un programa que interrumpe el flujo normal de instrucciones.,»
en Java, todos los errores y excepciones se representan con la clase lanzable. Cuando se produce un error dentro de un método, el método crea un objeto (de cualquier subtipo de Throwable
) y lo entrega al sistema de tiempo de ejecución. El objeto, llamado objeto de excepción.
El objeto de excepción contiene información sobre el error, incluido su tipo y el estado del programa cuando se produjo el error. Crear un objeto de excepción y entregarlo al sistema de tiempo de ejecución se denomina lanzar una excepción.
1.1., Control de excepciones
tenemos dos opciones cuando se crea un objeto de excepción en nuestra aplicación.
- lo manejaremos dentro del método
- O podemos pasarlo al método de llamada para que lo maneje.
Esta es una decisión muy importante a tomar al establecer las responsabilidades de un método. Un método debe indicar claramente que lo que todos los escenarios excepcionales que va a manejar y que no lo hará. Se define en la sintaxis del método usando la cláusula throws.
para manejar la excepción, debemos capturar la excepción en la sección capturar del bloque try-catch.,
If an exception is not handled in the application, then it will propagate to JVM and JVM will usually terminate the program itself.
Checked vs unchecked exceptions in Java
2.1. Exception Hierarchy
In Java, exceptions are broadly categorized into two sections: checked exceptions and unchecked exceptions.
2.2. Checked Exceptions
Java forces you to handle these error scenarios in some manner in your application code., Vendrán inmediatamente en su cara, una vez que comience a compilar su programa. Definitivamente puedes ignorarlos y dejarlos pasar a JVM, pero es un mal hábito. Idealmente, debe manejar estas excepciones en el nivel adecuado dentro de su aplicación para que pueda informar al usuario sobre el error y pedirle que vuelva a intentarlo/ venga más tarde.
generalmente, las excepciones marcadas denotan escenarios de error que están fuera del control inmediato del programa. Por lo general, se producen interactuando con recursos externos/recursos de red, por ejemplo, problemas de base de datos, Errores de conexión de red, archivos faltantes, etc.,
Checked exceptions are subclasses of Exception class.
Example of checked exceptions are : ClassNotFoundException, IOException, SQLException and so on.
Checked Exception Example
FileNotFoundException
is a checked exception in Java. Anytime, we want to read a file from filesystem, Java forces us to handle error situation where file may not be present in place.
public static void main(String args) { FileReader file = new FileReader("somefile.txt");}
In above case, you will get compile time error with message – Unhandled exception type FileNotFoundException
.,
para que el programa pueda compilar, debe manejar esta situación de error en el bloque try-catch
. El código dado a continuación compilará absolutamente bien.
2.3. Excepciones sin marcar
Java también proporciona excepciones sin marcar, cuyas ocurrencias no son verificadas por el compilador. Entrarán en vida / ocurrirán en su programa, una vez que se ejecute cualquier código con errores.
un método no es forzado por el compilador a declarar las excepciones no verificadas lanzadas por su implementación. En general, tales métodos casi siempre no los declaran, también.,
Las excepciones sin marcar son subclases de RuntimeException. Ejemplo de desmarcada excepciones son : ArithmeticException
, ArrayStoreException
, ClassCastException
y así sucesivamente.
RuntimeException
es en sí misma subclase de Exception
es decir, todas las clases de excepción sin marcar deberían haber sido marcadas excepciones implícitamente, pero no lo son.»ejemplo de excepción sin marcar
Checkout el código dado a continuación. El código anterior no da ningún error de tiempo de compilación., Pero cuando el ejemplo, lanza NullPointerException
. NullPointerException es una excepción sin marcar en Java.
Recuerde que la mayor diferencia entre el marcado y sin marcar es que las excepciones excepciones comprobadas son forzadas por el compilador y se utiliza para indicar condiciones excepcionales que están fuera del control del programa (por ejemplo, errores de e/S), mientras desactivada excepciones se produjo durante el tiempo de ejecución y se utiliza para indicar los errores de programación (por ejemplo, un puntero nulo).,
prácticas recomendadas para el manejo de excepciones de Java
- Las excepciones marcadas se pueden usar cuando un método no puede hacer lo que su nombre dice que hace. por ejemplo, un método llamado prepareSystem() que rellena previamente los archivos de configuración y hace alguna configuración con ellos, puede declarar lanzar
FileNotFoundException
lo que implica que el método utiliza archivos de configuración del sistema de archivos. - Las excepciones Verificadas idealmente nunca deben usarse para Errores de programación, pero absolutamente deben usarse para Errores de recursos y para el control de flujo en tales casos.,
- lanzar solo aquellas excepciones que un método no puede manejar por ningún medio. Método primero debe tratar de manejarlo tan pronto como se encuentra. Lanzar la excepción solo si no es posible manejar el método interior.
- Una buena manera de definir las firmas del método es declarar excepciones cerca del nombre del método. Si su método se llama
openFile
, entonces se espera que arrojeFileNotFoundException
?. Si su método se llamafindProvider
, entonces se espera que arrojeNoSuchProviderException
.,Además, este tipo de excepciones se deben hacer excepciones Verificadas, ya que obliga a la persona que llama a lidiar con los problemas que son inherentes a la semántica de sus métodos.
- La regla es si se puede esperar razonablemente que un cliente se recupere de una excepción, que sea una excepción marcada. Si un cliente no puede hacer nada para recuperarse de la excepción, que sea una excepción sin marcar.
en realidad, la mayoría de las aplicaciones tendrán que recuperarse de casi todas las excepciones, incluyendo
NullPointerException
,IllegalArgumentExceptions
y muchas otras excepciones sin marcar., La acción / transacción que falló se abortará, pero la aplicación tiene que mantenerse viva y estar lista para servir la siguiente acción / transacción.el único momento en que normalmente es legal apagar una aplicación es durante el inicio. Por ejemplo, si falta un archivo de configuración y la aplicación no puede hacer nada sensato sin él, entonces es legal apagar la aplicación.,
Conclusión
En este post, hemos aprendido la diferencia entre lo facturado vs desactivada excepciones en Java, junto con cómo manejar sin marcar excepciones, la excepción de la jerarquía en Java con ejemplos.
Siéntase libre de dejar sus preguntas en los comentarios.
Feliz Aprendizaje !!,
- Asynchronous and synchronous exceptions
- exception handling using inner classes
- exception handling best practices
- effectively handle NullPointerException
- Custom exceptions in Java
- Java exception doc
Leave a Reply