-
Notifications
You must be signed in to change notification settings - Fork 0
/
Try_Expect.py
81 lines (54 loc) · 1.82 KB
/
Try_Expect.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
"""
try e expect -> servem para tratar os possíveis erros que serão gerados no código
Afinal quando eu me preocupo em tratar um erro de código? Bom, SEMPRE que houver algum
tipo de entrada de dado, deve ser tratado possíveis erros
"""
# Exemplo: Forma Geral -> Genérico
try:
geek()
except :
print('Deu algum problema na execução do programa')
# Exemplo: Melhor forma de uso
try:
geek()
except NameError:
print('"NameError" foi dado na execução do programa')
# Exemplo 2
try:
geek()
except NameError as err:
print(f'"NameError" foi dado na execução do programa: {err}')
def get_values(dict, key):
try:
return dict[key]
except NameError as erra:
print(f'Foi gerado um erro de "NameError: {erra}')
except TypeError as errb:
print(f'Foi gerado um erro de "TypeError": {errb}')
except KeyError:
return None
dic = {"Nome": "Heloisa"}
print(get_values(dic, "Nome"))
print(get_values(dic, "Game"))
# Exemplo com ENTRADA de dados
def dividr(a, b):
try:
return int(a) / int(b)
except ValueError:
return 'Valor digitado incorreto!'
except ZeroDivisionError:
return 'Não existe divisão por 0'
num1 = (input('Digite o primeiro valor: '))
num2 = (input('Digite o segundo valor: '))
print(f'O resultado da divisão pelos números é: {dividr(num1, num2)}')
# Exemplo Semi-Genérico de tratamento de erros
def dividr(a, b):
try:
return int(a) / int(b)
except (ValueError, ZeroDivisionError):
return 'Ocorreu algum problema!'
finally: # O finally, geralmente, é utilizado para fechar ou desalocar recursos.
print('Executando finally')
num1 = (input('Digite o primeiro valor: '))
num2 = (input('Digite o segundo valor: '))
print(f'O resultado da divisão pelos números é: {dividr(num1, num2)}')