Tratamento de erros em Python
Um programador deve sempre testar o seu programa muitas e muitas vezes a procura de erros (bugs) e corrigir esses erros. Em algumas situações o erro é do programador, e outra é do usuário, e outras são erros que não se pode colocar a culpa em ninguém. Quando um erro acontece o programa para ali mesmo. Alguns erros são tão críticos para o programa, mais mesmo assim o programa para. Para evitar que isso ocorra o python tem um tratamento de erro com try except.
Dentro do try vai o código que você acha que pode acontecer alguma coisa errada. E o except vai o código que deve ser executado quando um erro acontecer.
Exemplo
Nesse exemplo um erro vai acontecer no bloco try. Quando isso acontece o compilador pula a execução para o bloco except e executa o seu código.
try:
# a variável a não existe
# um erro vai acontecer
print(a)
except:
print('Um erro aconteceu no bloco try')
# a variável a não existe
# um erro vai acontecer
print(a)
except:
print('Um erro aconteceu no bloco try')
Muitas exceções
O nosso ultimo exemplo é muito genérico, serve para todo erro que ocorrer no bloco try. Para refinar o nosso tratamento de erro podemos criar varias exceções, uma para cada tipo de erro. Por exemplo: quando uma variável não existe o erro e o NameError, quando é feita uma tentativa de se dividir por zero o erro é ZeroDivisionError.
Exemplo
A mensagem “uma variável não existe” só vai aparecer se tiver uma tentativa de acessar uma variável que não existe, porque o programa vai retornar o erro NameError, fazendo nosso programa entrar no bloco except NameError.
try:
a = 9 / 0
except NameError:
print('Uma variável não existe')
except ZeroDivisionError:
print('Não é possível dividir por zero')
a = 9 / 0
except NameError:
print('Uma variável não existe')
except ZeroDivisionError:
print('Não é possível dividir por zero')
Se no bloco try houver uma tentativa de dividir por zero o programa vai retornar o erro ZeroDivisionError e entrar no bloco except ZeroDivisionError.
Else
É muito útil saber que não aconteceu nenhum erro durante o nosso programa. E é ai que entra o else. Se nenhum erro acorrer no bloco try o else será executado.
Exemplo
try:
a = 9 / 2
except:
print('Um erro aconteceu')
else:
print('Nenhum erro aconteceu')
a = 9 / 2
except:
print('Um erro aconteceu')
else:
print('Nenhum erro aconteceu')
Finally
O else só será executado caso não haja erros durante a execução do programa. Mais e se você quiser que um bloco de código seja executado mesmo que nenhum erro ocorra? Com o finally o código será executado mesmo que um erro ocorra ou não.
Exemplo
try:
a = 9 / 2
except:
print('Um erro aconteceu')
finally:
print('Nenhum erro aconteceu. Ou aconteceu, não sei dizer!!')
a = 9 / 2
except:
print('Um erro aconteceu')
finally:
print('Nenhum erro aconteceu. Ou aconteceu, não sei dizer!!')
Lançando uma exceção
Imagine que você precisa que o usuário digite um numero menor do que dez, e se isso não for feito o programa deve lança uma exceção. Em python essa exceção não existe, mais podemos criar com a palavra reservada raise.
Exemplo
Se o usuário digitar um numero maior que 10 a exceção “Não é permitido números maiores que 10” vai ser lançada e o programa para.
a = input('Digite um numero menor que 10: ')
if int(a) > 10:
raise Exception('Não é permitido números maiores que 10')
if int(a) > 10:
raise Exception('Não é permitido números maiores que 10')
Lançando um erro
Para lançar um erro é usada a função TypeError. Essa função recebe como parâmetro o novo erro.
Exemplo
No compilador você vai ver o novo erro: O número 3 não é permitido.
a = 3
if a == 3:
raise TypeError('O número 3 não é permitido')
if a == 3:
raise TypeError('O número 3 não é permitido')
0 comentários:
Postar um comentário