[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]