Skip to content

Commit 72092a0

Browse files
#10 - Python
1 parent 14e6aa4 commit 72092a0

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
'''EJERCICIO:
2+
Explora el concepto de manejo de excepciones según tu lenguaje.
3+
Fuerza un error en tu código, captura el error, imprime dicho error
4+
y evita que el programa se detenga de manera inesperada.
5+
Prueba a dividir "10/0" o acceder a un índice no existente
6+
de un listado para intentar provocar un error.
7+
DIFICULTAD EXTRA (opcional):
8+
Crea una función que sea capaz de procesar parámetros, pero que también
9+
pueda lanzar 3 tipos diferentes de excepciones (una de ellas tiene que
10+
corresponderse con un tipo de excepción creada por nosotros de manera
11+
personalizada, y debe ser lanzada de manera manual) en caso de error.
12+
- Captura todas las excepciones desde el lugar donde llamas a la función.
13+
- Imprime el tipo de error.
14+
- Imprime si no se ha producido ningún error.
15+
- Imprime que la ejecución ha finalizado. '''
16+
17+
# Manejo de excepciones en Python
18+
try: # try sirve para intentar ejecutar un bloque de código
19+
# División por cero
20+
print(10/0)
21+
except Exception as e:
22+
print(f'Error: {e} ({type(e).__name__})')
23+
24+
# error para acceder a un índice no existente
25+
try:
26+
lista = [1, 2, 3]
27+
print(lista[3])
28+
except Exception as e:
29+
print(f'Error: {e} ({type(e).__name__})')
30+
31+
# EXTRA
32+
# Función que procesa parámetros y lanza excepciones
33+
class StrTypeError(Exception): # Excepción personalizada
34+
pass
35+
36+
def process_params(params: list):
37+
if len(params) < 3:
38+
raise IndexError('La lista debe tener al menos 3 elementos') #raise lanza una excepción manualmente, lo que se pone entre paréntesis es el mensaje de error
39+
elif params[1] == 0:
40+
raise ZeroDivisionError('No se puede dividir por cero')
41+
elif type(params[2]) == str:
42+
raise StrTypeError('El tercer elemento no puede ser un string')
43+
44+
print(params[2])
45+
print(params[0]/params[1])
46+
print(params[2]+5)
47+
48+
try:
49+
process_params([1, 1, 1])
50+
except IndexError as e:
51+
print(f'Error: {e} ({type(e).__name__})')
52+
except ZeroDivisionError as e:
53+
print(f'Error: {e} ({type(e).__name__})')
54+
except StrTypeError as e:
55+
print(f'Error: {e} ({type(e).__name__})')
56+
except Exception as e:
57+
print(f'Error: {e} ({type(e).__name__})')
58+
else:
59+
print('No se ha producido ningún error')
60+
finally:
61+
print('La ejecución ha finalizado')

0 commit comments

Comments
 (0)