.. | ||
excepciones.py | ||
README.md |
Errores y Excepciones
- Error de sintaxis *SyntaxError*
- Error de tipo *TypeError*
- Error de importación *ModuleNotFoundError*
- Error de nombre *NameError*
- Error archivo no encontrado *FileNotFoundError*
- Error de valor *ValueError*
- Error de indice *IndexError*
- Error de llave *KeyError*
- Levantar una excepción
- Assert
- Manejo de excepciones (try, except, else, finally)
- Definir excepciones y clases de error propias.(BaseException subClass)
Error de sintaxis
a = 5 print(a)
SyntaxError: invalid syntax
print('hola'))
SyntaxError: unmatched ')'
Error de tipo
a = 5 + 'hola'
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Error de importación
import supermodulo
ModuleNotFoundError: No module named 'supermodulo'
Error de nombre
a = b
NameError: name 'b' is not defined
Error archivo no encontrado
f = open('algun_archivo')
FileNotFoundError: [Errno 2] No such file or directory: 'algun_archivo'
Error de valor
a = [1,2,3]
a.remove(4)
ValueError: list.remove(x): x not in list
Error de indice
a = [1,2,3]
a[3]
IndexError: list index out of range
Error de llave
mi_dicc = {'nombre': 'Alexanderson'}
mi_dicc['edad']
KeyError: 'edad'
Levantar una excepción
x = -5
if x < 0:
raise Exception('x debe ser positivo')
Exception: x debe ser positivo
Assert
x = -5
assert(x > 0), 'x no es positivo'
AssertionError: x no es positivo
Manejo de excepciones
try:
a = 5/0
except Exception as e:
print('ha ocurrido un error -->', e)
try:
a = 5/0
b = a + 'que'
except ZeroDivisionError as e:
print(e)
except TypeError as e:
print(e)
else:
print('todo esta bien')
finally:
print('siempre se llega aquí')
Definir excepciones propias
Con clases de error propias. (SubClase de BaseException)
class ValorMuyAltoError(Exception):
pass
class ValorMuyBajoError(Exception):
def __init__(self, message, value):
self.message = message
self.value = value
def test_valor(x):
if x > 100:
raise ValorMuyAltoError('El valor es muy alto')
if x < 5:
raise ValorMuyBajoError('El valor es muy bajo', x)
try:
test_valor(2)
except ValorMuyAltoError as e:
print(e)
except ValorMuyBajoError as e:
print(e.message, e.value)