Tratamento de Erros e Exceções em Python 3

Erros e exceções em Python 3

Em todo software existem partes do código onde há a necessidade de aplicar o tratamento de erros e 
exceções, onde o desenvolvedor não está esperando que o usuário final possa causá-los. Até mesmo um simples script de divisão está sujeito a erros, quando por exemplo, você tenta dividir um número por zero. O que acaba gerando um problema, pois, sempre há a necessidade de se preparar para todos os erros conhecidos. Aqui, eu estarei deixando um exemplo de um script simples de divisão, para você que é iniciante em programação entenda um pouco sobre tratamento de erros e exceções em Python 3.

A princípio, o código não tem nenhum tipo de tratamento como podem ver abaixo:

n1 = float(input("Digite o primeiro número: "))
n2 = float(input("Digite o segundo número: "))
print(n1 / n2)

Note que o código acima é bem simples e está correto, porém ele não tem nenhum tipo de tratamento. Então se o usuário tentar digitar uma letra em vez de um número, apareceria um erro como mostrado na imagem a baixo:



Para tratar o erro acima, precisamos utilizar o comando try - que é o comando especializado para tratamentos de erros try (significa tentar). Em seguida, adicionamos a linha do código onde pode ocorrer  um erro, e abaixo adicionamos o comando except seguido do tipo de erro. Abaixo, o código da divisão já com o tratamento realizado dentro de um loop:

def input_float(msg):
    while True:
        try:
            return float(input(msg))
        except ValueError:
            print('Valor invalido')

n1 = input_float('Primeiro número: ')
n2 = input_float('Segundo número: ')
print(n1 / n2)

Desta forma, o erro ValueError  será tratado. E como o tratamento foi realizado dentro de uma função, poderemos chamá-la sempre que precisarmos, tornando o código mais limpo. No entanto, existe ainda outro possível erro, onde o usuário pode tentar dividir um número por zero, finalizando assim a aplicação. E para que o código consiga funcionar corretamente e livre de problemas conhecidos, teríamos que aplicar outro tratamento, como mostrado no código a baixo:

def input_float(msg):
    while True:
        try:
            return float(input(msg))
        except ValueError:
            print('Valor invalido')


n1 = input_float('Primeiro número: ')
n2 = input_float('Segundo número: ')
while n2 == 0:
    try:
        (n1 / n2)
    except ZeroDivisionError:
        print('Não é possivel dividir por  0')
    n2 = input_float('Segundo número: ')
print(n1 / n2)

Nós criamos uma solução simples para 2 erros que podem ocorrer durante a execução da aplicação, e claro, essa não é a melhor forma de tratar um erro. Mas, é a mais simples que eu conheço. E fiquem livres para testar e tentar aplicar outros tipos de correções.Você pode estudar mais os tratamentos aqui ou aqui. Obrigado pela atenção e estudem muito, até a próxima! 

0 comments:

Obrigado por comentar