Manejo de Excepciones en Java

Manejo de Excepciones

Ningún programa está exento de error, pese a que uno de los desafíos más importantes a la hora de escribir un programa es que sí se encuentre libre de errores. Los errores más frecuentes son aritméticos (divisiones por cero, valores indeterminados, overflow (desbordamiento)), manejo de archivos (ruta incorrecta, archivo inexistente, permisos, ...), administración de base de datos (driver no encontrado o no compatible, error de conexión, error de sentencias, error en recuperación de datos, ...)
En Java existen dos tipos de excepciones:
> Checked: las excepciones tipo checked son las marcadas o revisadas por el compilador. Éstas las definimos con la sentencia throw. La forma de definirla es la siguiente:
          private tipo_de_retorno NombreDelMetodo (int x, String y, ...) throw TipoDeExcepcion 
          {
               .................
           }
> Unchecked: las de este tipo se dan en tiempo de ejecución.

Para manejar o controlar los errores en tiempo de ejecución, usamos la sentencia  try-catch, cuya sintaxis es:
          try    {
                   .......
          }
          catch (TipoDeExcepcion objeto)  {
               ...........
          }
          fnally {
               ...............
          }

En el try (intentar) se escriben las funciones o instrucciones que queremos que sean ejecutadas mientras "esté todo bien", y en el catch (atrapar) lo que se hace es atrapar las excepciones (o errores) que lleguen a ocurrir, se puede especificar tantos catch como sean necesarios, la forma de hacerlos es:
           try {
                   ............
           }
           catch (TipoException1 | TipoExcepcio2 | TipoException 3 obj) {
                       ................
           }
o también de esta manera:
           try {
                   ............
           }
           catch (TipoException1   obj) {
                       ................
           }
           catch (TipoException2 obj) {
                          ..................
           }

Exiten muchas clases para el manejo en forma particular de cada excepción.
Todas las clases de excepciones pertenecen a la clase base Exception, ya la clase específica de excepción a usar depende de la/s instrucción/es o función/es puestos en el try.
Por ejemplo, si se quiere realizar una conversión de tipos de datos (de un String a un Int [cadena incorrecta], de double a int [sin truncar la parte decimal]),   la excepción a utilizar es la NumberFormatException. Cuando se realiza un división a cero, se debe atrapar la excepción ArithmeticException

Para los casos en que se debe recibir algún valor desde la interfaz de usuario o retornar algún valor como resultado de alguna operación y sea NULO el valor ingresado o devuelto la clase correspondiente a usar es NullPointerException que se dispara cuando el valor en cuestión es nulo.
SQLException sirve para canalizar excepciones que puedan ocurrir cuando tratamos con alguna base de datos, sea conexión, consultas, inserciones, etc.
Así mismo, cuando queremos abrir algún archivo o referirnos a otro objeto (driver, por ejemplo) cuando el programa no pueda encontrar el objeto/archivo nos salta la excepción ClassNotFoundException.


Podría seguir listando las excepciones, que sería interminable (por así decirlo), pero mi intención no es sino la de presentar los conceptos claves y necesarios para entender cómo funciona la cláusula try-catch.

Además creo que sería contraproducente, porque cada programador debe entender los conceptos nada más y luego ponerlos en practica y profundizarlos con su experiencia particular.

Comentarios

Entradas populares de este blog

Ejercicios para aprender AutoCAD 3D

Piezas 3D - interesantes

Cómo instalar una fuente de alimentación