En este video tutorial veremos cómo manejar las excepciones. Vimos que una excepción es un error que ocurre durante la ejecución del programa y que estos errores se pueden manejar. Los errores tienen un tipo, el tipo base de errores es "exception", luego el resto de los errores siempre heredan de este tipo de error. Python nos brinda varios tipos de errores, por ejemplo, si divido "uno" por "cero" me dará un error del tipo "Zero Division Error". Luego, si quiero acceder a una variable que no existe, por ejemplo la variable "t", me devuelve un "Name Error". Para manejar un error, Python nos provee las sentencias "try" y "except". Lo primero que tenemos que hacer al tratar de manejar una excepción es darnos cuenta qué tipo de error podría ocurrir en un bloque de código. Veamos algunos ejemplos donde manejamos errores de distinto tipo. En el caso de la división por "cero", pongo el código que genera el error de división por "cero" dentro del "try" y capturo en el "except" el error de "Zero Division Error" y, en ese caso, imprimo en pantalla que hubo una división por "cero". Ejecutamos el ejemplo y vemos que se imprime en pantalla "División por cero". Otro ejemplo es hacer una función "find", parecida a la función "find" de las listas, que devuelve el índice donde se encuentra un elemento en la lista y si no lo encuentra, devuelve "menos uno". Para esto comenzará el índice en "cero", se hará un "while true" donde se preguntará: si el elemento de la lista en el índice actual coincide con el elemento buscado, se devuelve el índice si no, se aumenta en "uno" el índice y se vuelve a iterar. Si el elemento pertenece a la lista, entonces en algún momento entrará al "if" y devolverá el índice correspondiente si no, el índice tendrá en un momento un valor más grande que la cantidad de elementos de la lista. En ese caso, se lanza un "Index Error" al intentar acceder a ese índice, entonces el "try" capturará el error del tipo "Index Error" y ejecutará el código que está dentro del "except", devolviendo un "menos uno". Veamos dos ejemplos, uno donde el elemento buscado pertenece a la lista y otro donde el elemento buscado no pertenece a la lista. Para eso, cargamos la función "find" primero en el intérprete y ejecutamos el primer ejemplo donde el "cuatro" pertenece a la lista y está en el índice "dos", con lo cual devuelve el "dos". Y otro ejemplo, donde el "uno" no pertenece a la lista, entonces devuelve el "menos uno". Además, Python nos provee la sentencia "finally" que se ejecuta siempre se haya levantado la excepción o no. La sentencia "finally", en general, se utiliza para realizar acciones de limpieza como, por ejemplo, cerrar un archivo, cerrar una conexión de base de datos, etcétera, que necesitamos que siempre se realice aunque ocurra algún error porque si no nos quedarán recursos sin devolver. También tenemos la sentencia "else" que se ejecuta cuando no se levantó una excepción en el bloque de código que está adentro del "try". La sentencia "else" se utiliza para que en el bloque "try" sólo esté el código que podría levantar la excepción que estamos esperando. Veamos un ejemplo: definamos la función "divide" que divide dos números. En el cuerpo del "try" se hará la división entre "x" e "y", cuando "y" sea "cero", la división lanzará una excepción del tipo "Zero Division Error", con lo cual se imprimirá en pantalla "División por cero!". Cuando "y" sea distinto de "cero", entonces se hará la división entre "x" e "y" y el resultado se guardará en la variable "result" y se imprimirá en pantalla "El resultado es result". Luego, el código que está en la cláusula "finally" se ejecutará en ambos casos. Veamos dos ejemplos, uno cuando se divide por un número distinto de "cero" y otro cuando se divide por "cero". Primero ejecutamos la definición de "divide" en la consola y vamos a probar "divide" de "dos" por "uno" que calcula el resultado, es "dos" e imprime en pantalla el mensaje "ejecutando la cláusula finally" y después ejecutamos "divide" de "dos" por "cero", que vemos que nos da "División por cero!" y también el mensaje "ejecutando la cláusula finally". Hemos visto cómo manejar las excepciones en Python.