Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Como tratar erros sem parar execução

Conforme explicado no curso pelo Nico, podemos utilizar a função int para convertermos o valor retornado pela função input para inteiro, segue exemplo abaixo:

numero = int(input("Digite um número:"))

Porém, se o usuário digitar, por exemplo, o nome dele, irá acontecer um erro que irá parar a execução do código.

Digite um número:adriano
Traceback (most recent call last):
  File "/home/adriano/PycharmProjects/jogo/adivinhacao.py", line 8, in <module>
    numero = int(input("Digite um número:"))
ValueError: invalid literal for int() with base 10: 'adriano'

Existe alguma forma em que podemos capturar este erro, exibir uma mensagem pro usuário e não parar a execução do código?

No JavaScript, para esse tipo de situação, podemos utilizar a instrução try...catch para realizarmos tratamentos de erro. Como isso se aplica ao Python?

2 respostas

Oi tudo bem??

Dá uma olhada nesse artigo que fala sobre o assunto https://pythonhelp.wordpress.com/2012/09/14/tratamento-de-excecoes/

Espero ter ajudado!!!

solução!

Olá, Adriano.

Tem sim. Em Python usa-se as funções built-in trye a except.

Ex:

while True:
    try:
        numero = int(input('Digite um número inteiro: '))
        break
    except ValueError:
        print('Você não digitou um inteiro. Tente novamente: ')

Enquanto o usuário não digitar um inteiro a exceção será chamada por conta do while True (loop infinito), que só termina quando o código recebe um inteiro, por meio do break.

O ValueError após o except é uma boa prática em Python. Você não deve usar excepts genéricos em Python, e sim especificar o tipo de erro que pode ocorrer para chamar a exceção correta. No caso, o erro possível é o input do nosso usuário não ser um número inteiro.

Mas existem diversos outros tipos de erros além do ValueError (Como ZeroDivisionError, NameError, TypeError, etc). Cabe a você aplicar o tipo possível de erro mais adequado na sua exceção do seu código.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software