Esta entrada es muy especial para mí porque es una de las primeras que realizo junto con alumnos de un curso superior de programación en Java.
En esta ocasión este post está escrito por mis alumnos y a continuación ellos mismos se van a presentar.
- Mª Jose: Me apasiona la programación y estoy muy contenta de poder participar en la creación de este post, y de iniciarme en la programación en Java junto a mis compañeros y a mi profesor Emilio. He tenido mucha suerte al haber encontrado esta formación de tipo presencial, en la que estoy teniendo la oportunidad de aprender muchísimo y de conocer muy buenos profesionales, que además de saber a fondo la materia que imparten, son muy buenas personas. Con este curso, entre todos conseguiremos obtener un buen nivel de programación en Java, la certificación en Java (OCA) y un buen trabajo.
- Rafael: Es un placer poder participar junto con mis compañeros y Emilio en la creación de este post. Espero que este tema de Java os resulte tan apasionante como a nosotros, y que entre todos podamos seguir aprendiendo aún más.
- Juan Diego: Encantado de estar en este curso junto con mis compañeros y profe, descubriendo los entresijos de la programación y todo el horizonte que se haya detrás de él.
Y el profesor del curso es Emilio Pérez, ya me conocéis, pero os dejo también una pequeña presentación sobre mí para que mis alumnos puedan tener un referente:
- Emilio Pérez: Soy formador, emprendedor y programador. Desde pequeño me gusta investigar y conocer el por qué de las cosas. Me encanta desmontar cosas aunque después no las sepa montar. Además soy el profesor del curso de programación Java que están realizando en estos momentos mis alumnos y estoy ayudándoles a crear su propia marca personal, de ahí que estén realizando esta y otras entradas sobre Java en mi blog.
¿Qué son las excepciones?
Si nos vamos a la WikiPedia nos dice lo siguiente sobre lo que es una excepción:
“Una excepción en términos de lenguaje de programación es la indicación de un problema que ocurre durante la ejecución de un programa.”
Ahora lo intentaremos explicar con palabras más entendibles para el resto de los mortales:
En ocasiones, nuestras aplicaciones informáticas, apps, webs y todo lo que esté relacionado con la programación, puede sufrir errores durante su ejecución y algunos de estos errores se denominan excepciones, como por ejemplo, cuando una persona pone en la calculadora algo dividido entre cero, esto generaría una excepción.
¿Qué es el manejo de las excepciones?
En la programación orientada a objetos, dichos objetos guardan relación entre sí, de tal manera que un fallo en la ejecución de código dentro de uno de esos objetos puede hacer que el resto de nuestra aplicación o programa se vea contagiado, es aquí donde el manejo de excepciones juega un papel crucial manteniendo o encapsulando ese error y haciendo de cortafuegos para el resto del programa, permitiendo así que puede seguir ejecutándose sin ningún tipo de problema.
Una de las principales ventajas del manejo de las excepciones proviene en la creación de porciones de código donde podemos capturar estas excepciones y poder tomar decisiones según el tipo de excepción que nos encontremos y así, nuestra aplicación podrá tomar decisiones según nuestro algoritmo.
Hay ocasiones en las que puede producirse un error inesperado en la ejecución de nuestro programa, entonces diremos que ha sucedido una excepción. Existen muchos tipos de excepciones en Java y debemos saber cómo manejarlas. A continuación indicaremos algunos ejemplos de las excepciones más utilizadas.
Ejemplos de excepciones
Un ejemplo de excepción podría ser la clase “java.lang.ArrayIndexOutOfBoundsException”.
Si entras en el enlace de la clase y observas el Java Doc, esta clase hereda de las siguientes:
java.lang.Object
- java.lang.Throwable
- java.lang.Exception
- java.lang.RuntimeException
- java.lang.IndexOutOfBoundsException
- java.lang.RuntimeException
- java.lang.Exception
De modo resumido, podríamos decir que esta excepción ocurre cuando intentas acceder a un índice de un array que no existe.
A continuación tienes un código que muestra este tipo de excepción:
public static void main(String[] args) {
int[] myArray = new int[3];
myArray[3] = 8;
}
Si ejecuto este código, el resultado sería algo parecido a esto:
Exception in thread «main» java.lang.ArrayIndexOutOfBoundsException: 3 at TestErrors.main(TestErrors.java:17)
Como puedes observar en el error que Java nos muestra por consola, hemos tenido una excepción del tipo comentado.
Otro tipo de excepción, por ejemplo, ocurre cuando quieres usar una variable que no hace referencia a ninguna posición en memoria, por lo tanto tendremos el siguiente error: “java.lang.NullPointerException”
A continuación tienes un código que muestra este tipo de excepción:
public static void main(String[] args) {
String a=null;
String b= "Hola";
System.out.println(a.trim()+b.trim());
}
Si ejecuto este código, el resultado sería algo parecido a esto:
Exception in thread «main» java.lang.NullPointerException at TestErrors.main(TestErrors.java:17)
Como puedes observar en el error que Java nos muestra por consola, hemos tenido una excepción del tipo comentado y ocurre porque se está intentando acceder a un método de la variable “a” cuando esta variable no tiene ningún objeto asignado y por ello nos provoca un error en tiempo de ejecución.
Diferencias entre las excepciones y las excepciones en tiempo de ejecución
Una excepción es un fallo en la ejecución del código que es posible que ocurra, y por eso prevenimos esa acción, sin embargo una excepción en tiempo de ejecución (java.lang.RuntimeException) es un tipo especial de excepción (es un hijo de java.lang.Exception), las cuales no son chequeables por nuestro compilador.
Los dos ejemplos vistos anteriormente son excepciones del tipo Chequeable, pero si quieres acceder a un fichero de texto creando un objeto del tipo FileInputStream, la creación de este objeto devuelve una excepción chequeable del tipo java.io.FileNotFoundException. Esto nos obliga a tener que tratar la excepción y para ello tenemos dos opciones posibles.
- Elevar la excepción. Escurrimos el bulto a otro objeto.
- Envolvemos el objeto problemático para que, en caso de haber una excepción, podamos tratarla.
Y ahora te preguntarás, ¿cómo hacemos esto?
El caso primero sería así:
public static void main(String[] args) throws FileNotFoundException {
FileInputStream archivo = new FileInputStream("MiArchivo.dat");
}
Al crear un objeto del tipo FileInputStream e indicarle la ruta de donde está mi fichero, este fichero puede existir o no. Entonces, en caso de no existir, la excepción que es generada con la construcción del objeto es elevada al propio método main y este lo eleva a la máquina virtual dando por finalizada la aplicación con un mensaje de error (nos saldría en color rojo con NetBeans)
El segundo caso sería así:
public static void main(String[] args) {
try {
FileInputStream archivo = new FileInputStream("MiArchivo.dat");
} catch (FileNotFoundException ex) {
System.out.println("Error al abrir el archivo: " + ex.getMessage());
}
}
En este caso envolvemos las líneas de código problemáticas con un try-catch.
En caso de haber una excepción, la aplicación muestra un mensaje pero no finaliza con errores.
Y recuerda que si quieres conseguir dar un cambio en tu vida y hacerte programador Java, hasta Febrero de 2019 tenemos abierto nuestro plazo de matriculación en un Máster el cual dirijo. Se llama Máster Java Full-Stack y la entidad que lo realiza es Abatic Soluciones Tecnológicas.