Excepciones

Siempre que ocurre un error en tiempo de ejecución, se crea una excepción.
Normalmente el programa se para y Pythton presenta un mensaje de error.

Por ejemplo, la división por cero crea una excepción:

Un elemento no existente en una lista hace lo mismo:

O el acceso a una clave que no está en el diccionario:

En cada caso, el mensaje de error tiene dos partes: el tipo de error antes de
los dos puntos y detalles sobre el error después de los dos puntos. Normalmente
Python también imprime una traza de dónde se encontraba el programa.

A veces queremos realizar una operación que podrı́a provocar una excepción, pero no queremos que se pare el programa. Podemos manejar la excepción usando las sentencias try y except.

Por ejemplo, podemos preguntar al usuario por el nombre de un archivo y luego intentar abrirlo. Si el archivo no existe, no queremos que el programa se pare; queremos manejar la excepción.

La sentencia try ejecuta las sentencias del primer bloque. Si no se produce ninguna excepción, pasa por alto la sentencia except. Si ocurre cualquier excepción, ejecuta las sentencias de la rama except y después continúa.

Podemos encapsular esta capacidad en una función: si el nombre de archivo existe devuelve verdadero si el archivo existe y falso si no:

Puede usar múltiples bloques except para manejar diferentes tipos de excepciones. Vea más detalles en el Manual de Referencia de Python.

La sentencia raise acepta dos argumentos: veamos un ejemplo con este programa que determina si un número es primo o no.

La sentencia raise acepta el nombre del error (en este caso ValueError) seguido de nuestro mensaje personalizado entre parentesis y comilla. Si introducimos un número que no cumpla la condición (número positivo), por ejemplo -0, Python3 se quejará e imprimira el mensaje de error definido en raise (‘El entero debe ser igual o mayor que 2.’).