[SOUND] Bien, estamos en nuestro último ejercicio, donde vamos a ver cómo podemos utilizar las excepciones. Una excepción muy común que tenemos es cuando por ejemplo queremos accesar a un índice que no está definido en un arreglo. Por ejemplo, yo podría tener el arreglo. Puedo ponerle "numeros". Y yo puedo definir que este arreglo tenga tres elementos. Tenga el elemento "5, 2, 8". De esta forma es como estoy inicializando mi arreglo. Y yo podría hacer que por ejemplo de este numeros. Si quiero accesar al elemento 0, podría imprimir esto y podría colocar el elemento 0. Podría también ahora colocar el elemento 1. Y bueno, todos sabemos muy bien cuál va a ser el resultado si yo quiero accesar a estos elementos. 5, 2, 8. Pero, ¿qué pasa si quiero accesar a un elemento o a un índice que no está definido?. El índice 0 está definido, el índice 1 sí, el índice 2 también, pero el índice 3 no. Si yo coloco un índice 3, al momento de correr esto. Nos bota un error. Vamos a ver. Que nos bota un error y automáticamente pues, bueno. you ni siquiera nos imprimió nuestro siguiente mensaje que queríamos poner pues una carita feliz. De que todo había sido exitosamente. Nos lanza esta excepción: ArrayIndexOutOfBoundsException. Esto quiere decir que nos pasamos del índice del arreglo. Que estamos accesando a una localidad que no está definida. Recordando la forma en como planteamos nuestros bloques try/catch. Yo podría poner try, y recordamos que dentro de try va el código que podría ser vulnerable. Colocamos "numeros = {5, 2, 8}. Y aquí dentro, en catch, puedo colocar. La excepción o el error que me está dando. O sea, catchar la excepción específica. Yo podría colocar un ArrayIndexOutOfBoundsException. Y entonces indicar "arrayE". Entonces yo aquí, si hago esto, si pongo esto así, de esta forma you no me está saltando lo rojo que tenía. No lo podemos observar, pero está entrando aquí. La idea es evitar que el programa se interrumpa. Entonces yo puedo colocar aquí a lo mejor un mensaje que sea más amigable que el que teníamos hace rato. Y si cae aquí, podemos decirle que "Estás intentando entrar a una localidad que no está definida". Porque yo you sé exactamente qué es lo que está pasando. Una localidad que no está definida. Y en efecto estamos entrando aquí. Yo puedo además agregar un bloque finally. Y aquí imprimir a lo mejor nuestra carita feliz que tanto queríamos que se ejecutara. Nuestra carita feliz sí se ejecuta. Está entrando al catch, porque estamos entrando a una localidad no definida. Está entrando al catch, y además también está entrando a finally. Si yo quito esta, y dejo que el programa corra bien. 0, 1, 2, son elementos válidos. ¿Qué sucederá? Simplemente me imprimirá los elementos pero no me imprimirá el mensaje. Y además me seguirá ejecutando mi carita feliz. Yo puedo por acá también Catchar una excepción más general. También como lo estamos haciendo. Pero para poderlo hacer así, necesitamos colocarlo después. Después del elemento específico. Entonces yo puedo colocar aquí, si no entró aquí. Si entra aquí yo you sé que es un error de que la localidad no está definida. Pero si ocurre cualquier otro error, yo podría también gestionar el error, colocando un mensaje de "Ocurrió algún error". Ocurrió, vamos a poner "este error". Y podría por aquí. Imprimir con la instrucción printStackTrace. Todo lo que ha sucedido en ese error. Hasta el momento no tenemos pero si llega a caer aquí, me imprimirá toda la ruta que ocurrió. Todas las clases en las que estuvo saltando cuando ocurrió este tipo de error. Entonces vuelvo a lo mismo. Tenemos un error en rojo que no sé gestionar. Este tipo de errores no son amigables para los usuarios. Entonces procura no mostrárselos a los usuarios. Este tipo de errores podrían funcionarte a ti como programador para que te diga o para que te muestre un poco más de qué fue lo que sucedió. Si no fue un error de este tipo, ocurrió otro tipo de error. Y aquí podemos saber qué fue lo que pasó. Entonces este tipo de instrucciones te funcionan a ti programador y tú podrías imprimirlas en algo que solo tú puedas ver. Pero si se lo muestras al usuario no es algo práctico y no es algo que sea conveniente. De esta forma es como podemos gestionar nuestras excepciones y nuestros errores para que nuestras aplicaciones no terminen inesperadamente. [MUSIC]