Manejo de excepciones
Índice:
- Definición
- Capturando excepciones
- Capturando excepciones específicas
- Múltiples excepciones
- Uso del else
- finally
- raise
Definición
Las excepciones son errores que ocurren durante la ejecución del programa. Cuando ocurre una excepción el programa se detiene.
Veamos algunas excepciones.
|
|
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-d29f6fbfa237> in <module>
1 #Cuando intentamos usar una variable que no hemos declarado tenemos una excepción
----> 2 print(k)
NameError: name 'k' is not defined
|
|
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-2-3d6e79215e9d> in <module>
1 #Cuando dividimos un valor por cero se produce otra excepción.
----> 2 print(29/0) #Aquí el programa se detiene
3 print("hola mundo")
ZeroDivisionError: division by zero
Python tiene varias excepciones definidas por defecto.
Alguna de ellas son:
- ImportError: cuando falla al momento de importar un módulo.
- IndexError: cuando queremos acceder a un índice (“elemento de una lista por ejemplo”) que no existe.
- NameError: cuando usamos una variable que no esta declarada.
- SyntaxError: cuando hay un error en la sintaxis del programa.
- TypeError: cuando hacemos una operación con tipos que no corresponden.
- ValueError: cuando los tipos corresponden pero el valor es inapropiado.
Manejando las excepciones
Para manejar las excepciones usamos tres palabras reservadas. try - except - finally
|
|
Algo falló
Capturando una excepción específica
La declaración except nos permite capturar una excepción específica. A modo de ejemplo, sabemos que la división por cero genera la excepción ZeroDivisionError.
|
|
Recuerde que la división por cero no está definida
|
|
La variable no está declarada
Múltiples excepciones
Como un bloque de código puede dar múltiples errores podemos capturar todas las excepciones que necesitemos.
|
|
La variable no está declarada
Uso del else en las excepciones.
Podemos hacer uso de la declaración else para generar un bloque de código que se ejecutará si no se generaron excepciones durante la ejecución del bloque try. Esta declaración es opcional.
|
|
10
Todo fue bien
Palabra reservada finally
La declaración finally permite ejecutar un bloque de código independientemente del resultado de try (no importa si genera excepciones o no). Este bloque se ejecutará siempre. Esta declaración es opcional.
|
|
Algo fue mal
Este bloque se ejecuta si o si
Declaración raise.
La declaración raise nos permite, a los programadores, generar excepciones.
|
|
---------------------------------------------------------------------------
Exception Traceback (most recent call last)
<ipython-input-14-5b4defbccf5c> in <module>
3 x = 2
4 if(x<10):
----> 5 raise Exception("Es menor a diez")
Exception: Es menor a diez
|
|
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-19-7ada38e8fc71> in <module>
3
4 if type(x) is not int:
----> 5 raise TypeError("Solo estan permitidos los valores enteros")
TypeError: Solo estan permitidos los valores enteros