quarta-feira, 1 de abril de 2020

Tratamento de erros em Python

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
try:
  # a variável a não existe
  # um erro vai acontecer
  print(a)
except:
  print('Um erro aconteceu no bloco try')
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.

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
try:
  a = 9 / 0
except NameError:
  print('Uma variável não existe')
except ZeroDivisionError:
  print('Não é possível dividir por zero')
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.
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')

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!!')

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
a = input('Digite um numero menor que 10: ')
if int(a) > 10:
  raise Exception('Não é permitido números maiores que 10')
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.

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
a = 3
if a == 3:
  raise TypeError('O número 3 não é permitido')
No compilador você vai ver o novo erro: O número 3 não é permitido.

0 comentários:

Postar um comentário