forked from HectorRiquelme/lenguaje-python
-
Notifications
You must be signed in to change notification settings - Fork 0
/
19-manejo de excepciones.py
151 lines (99 loc) · 4.78 KB
/
19-manejo de excepciones.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
'''
tema: 19 - manejo de excepciones
A - manejo de errores
B - tipos de excepciones
C - else y finally
ejercicio:
01 - implementar excepciones con else y finally
'''
'''
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
A - manejo de errores
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Existen ocasiones en que al codificar nos encontremos con errores
que no podamos "controlar", que exista la posibilidad de que un error
se nos presente aunque le agreguemos todas las validaciones que creamos necesarias,
entonces, como evitar que nuestra aplicación sufra una caída?
Para estos casos nos sería útil usar la herramienta de control de errores
"try except" en la cual ingresamos nuestro código de forma regular
dentro del espacio de nuestro "try"
try:
#codigo que queremos que sea controlado
luego de que hemos ingresado nuestro código establecemos el control de error
al usar "except"
try:
#codigo que queremos que sea controlado
except Exception as e:
# acción que queremos que se realice en caso de caer en un error
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
B - tipos de excepciones
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
en python es posible que los errores sean identificados por un tipo
de error en específico, es decir, si en un caso en particular
quisieramos validar especificamente un error aritmético entonces podríamos
usar la excepción ArithmeticError
BaseException
|
Exception
|
-------------------------------------------------------------------------
| | | | |
ArithmeticError OSError RuntimeError LookupError SyntaxError
| | | |
ZeroDivisionError | | IndentationError
| ----------------
----------------- | |
| | IndexError KeyError
FileNotFoundError PermissionError
pero, para qué nos puede servir usar una Exception específica si la global las cubre a todas?
pues, un try puede llevar muchos except de la mano, nos puede servir para realizar una acción
diferente para cada tipo de exception que encontremos
a = '10'
b = 0
resultado = None
try:
resultado = a / b
except ZeroDivisionError as e:
print('soy un error al divir por 0')
except TypeError as e:
print('soy un error al usar un strung como variable numérica')
except Exception as e:
print('soy otro tipo de error')
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
C - else y finally
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
también es posible usar un bloque llamado "else" , el cuál es uso
para realizar acción solo si no ha ocurrido ninguna excepción,
es decir, si ocurre una excepción, no accedemos a este bloque
Si lo que deseamos es establecer un bloque en el que se ejecuten acción
tanto si el código se ejecutó correctamente o entró en una excepción,
entonces podríamos usar el bloque "finally"
a = '10'
b = 0
resultado = None
try:
resultado = a / b
except Exception as e:
print('soy otro tipo de error')
else:
print('no ha ocurrido ningun error')
finally:
print('me ejecuto independientemente de si existen errores o no')
'''
#--------------------------------------------------------------
'''
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
01 - implementar excepciones con else y finally
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
'''
a = '10'
b = 0
resultado = None
try:
resultado = a / b
except Exception as e:
print('soy otro tipo de error')
else:
print('no ha ocurrido ningun error')
finally:
print('me ejecuto independientemente de si existen errores o no')