1
+ """
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
+
6
+ Prueba a dividir "10/0" o acceder a un índice no existente
7
+ de un listado para intentar provocar un error.
8
+ """
9
+ # ZeroDivisionError
10
+ def dividirDosNumeros (numero1 :int ,numero2 :int ):
11
+ try :
12
+ resultado = numero1 / numero2
13
+ print (resultado )
14
+ except ZeroDivisionError as e :
15
+ print (f"ZeroDivisionError - Se ha producido un error al intentar dividir dos números { numero1 } /{ numero2 } , el error es [{ str (e )} ]" )
16
+ finally :
17
+ print ("Continuamos con el programa sin que finalice" )
18
+
19
+ dividirDosNumeros (10 ,0 )
20
+
21
+ # ValueError - Si no es del tipo ...
22
+ # TypeError - Si es de tipo ...
23
+ def solicitar_edad (edad ):
24
+ try :
25
+ if int (edad ) >= 18 :
26
+ print ("Eres un adulto." )
27
+ else :
28
+ print ("Aún no eres un adulto." )
29
+ except ValueError as ve :
30
+ print (f"ValueError - Se ha producido un error [{ str (ve )} ]" )
31
+ except TypeError as te :
32
+ print (f"TypeError - Se ha producido un error [{ str (te )} ]" )
33
+
34
+ solicitar_edad ("a" )
35
+ solicitar_edad ([1 ,2 ])
36
+
37
+ # IndexError - Un índice que no existe
38
+ lista_dias_semana = ["lunes" ,"martes" ,"miércoles" ,"jueves" ,"viernes" ,"sabado" ,"domingo" ]
39
+ def dias_semana (indice ):
40
+ try :
41
+ print (lista_dias_semana [indice ])
42
+ except IndexError as e :
43
+ print (f"IndexError - Se ha producido un error [{ str (e )} ]" )
44
+
45
+ dias_semana (8 )
46
+
47
+ # KeyError - Una clave que no está en el diccionario
48
+ lenguages = {"Python" : 1991 , "C" : 1972 }
49
+ def request_languages (language ):
50
+ try :
51
+ print (lenguages [language ])
52
+ except KeyError as e :
53
+ print (f"KeyError - Se ha producido un error [{ str (e )} ]" )
54
+
55
+ request_languages ("Java" )
56
+
57
+ # Elevar nuestras propias excepciones
58
+ def sumar (a , b ):
59
+ if not isinstance (a , int ) or not isinstance (b , int ):
60
+ raise TypeError ("a y b tienen que ser números enteros." )
61
+ return a + b
62
+
63
+ try :
64
+ resultado = sumar ("1" ,5 )
65
+ print (resultado )
66
+ except TypeError as e :
67
+ print (f"TypeError - Se ha producido un error [{ str (e )} ]" )
68
+
69
+ print ("Está línea se ejectuará pase lo que pase." )
70
+
71
+
72
+ """
73
+ DIFICULTAD EXTRA (opcional):
74
+ Crea una función que sea capaz de procesar parámetros, pero que también
75
+ pueda lanzar 3 tipos diferentes de excepciones (una de ellas tiene que
76
+ corresponderse con un tipo de excepción creada por nosotros de manera
77
+ personalizada, y debe ser lanzada de manera manual) en caso de error.
78
+ - Captura todas las excepciones desde el lugar donde llamas a la función.
79
+ - Imprime el tipo de error.
80
+ - Imprime si no se ha producido ningún error.
81
+ - Imprime que la ejecución ha finalizado.
82
+
83
+ """
84
+
85
+ print ("\n EXTRA\n " )
86
+
87
+ # Creamos una clase que derive de Exceptions, para crear nuestras propias excepciones
88
+ class invalidAgeException (Exception ):
89
+ "Debe ser mayor de edad para comprar su entrada"
90
+ pass
91
+
92
+ # Función de comprobación de compra de entradas
93
+ def ticketSale (name ,age ):
94
+ # Programa
95
+ minimalAge = 18
96
+ # Operaciones
97
+ if not isinstance (age , int ):
98
+ raise ValueError ("La edad tiene que ser un número entero." )
99
+ elif not isinstance (name , str ) or len (name ) == 0 :
100
+ raise TypeError ("El nombre tiene que tiene que tener al menos un caracter." )
101
+ else :
102
+ if age < minimalAge :
103
+ raise invalidAgeException
104
+ else :
105
+ return f"Puede comprar su entrada { name } "
106
+
107
+ # Comprobación
108
+ try :
109
+ # Ejecutamos
110
+ #print(ticketSale("", 16)) # Devuelve un TypeError
111
+ #print(ticketSale("Juan", "1")) # Deuelve un ValueError
112
+ #print(ticketSale("Pepe", 16)) # Devuelve un invalidAgeException
113
+ print (ticketSale ("Jose" , 18 )) # OK
114
+ except invalidAgeException :
115
+ print ("Personalizada - Ha ocurrido una excepción: Eres un menor edad" )
116
+ except TypeError as te :
117
+ print (f"TypeError - Se ha producido un error [{ str (te )} ]" )
118
+ except ValueError as ve :
119
+ print (f"ValueError - Se ha producido un error [{ str (ve )} ]" )
120
+ except Exception as e :
121
+ print (f"Exception - Se ha producido un error [{ str (e )} ]" )
0 commit comments