Lidando com Erros de Sintaxe e Exceções em Python

PythonBeginner
Pratique Agora

Introdução

Bem-vindo ao laboratório de Erros de Sintaxe e Exceções em Python! Neste laboratório, você aprenderá a identificar e corrigir erros de sintaxe em seu código Python, bem como a lidar com exceções que podem ser levantadas durante a execução do seu código.

Conquistas

  • Erros de Sintaxe (Syntax Errors)
  • Exceções (Exceptions)
Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 100%. Recebeu uma taxa de avaliações positivas de 100% dos estudantes.

Entendendo Erros de Sintaxe

Um erro de sintaxe ocorre quando o interpretador Python não consegue entender a estrutura do seu código. Isso pode ser devido a uma variedade de problemas, como parênteses ausentes ou indentação incorreta.

Abra um novo interpretador Python.

python3

Aqui está um exemplo de um erro de sintaxe causado por dois pontos ausentes no final de um loop for:

for i in range(10)
  print(i)

O interpretador irá levantar um erro de sintaxe e nos dirá onde o erro ocorreu:

File "<stdin>", line 1
    for i in range(10)
                      ^
SyntaxError: invalid syntax

O símbolo de acento circunflexo (^) indica a localização do erro de sintaxe, e a mensagem de erro nos diz que a sintaxe é inválida.

Para corrigir este erro de sintaxe, simplesmente precisamos adicionar os dois pontos no final do loop for:

for i in range(10):
  print(i)

Agora, vamos tentar um exemplo com indentação incorreta:

if True:
print("Hello, World!")

Neste exemplo, a instrução print não está devidamente indentada sob a instrução if. Para corrigir este erro de sintaxe, precisamos indentar a instrução print corretamente:

if True:
  print("Hello, World!")

Lidando com Exceções

Uma exceção (exception) é um erro que ocorre durante a execução de um programa. Em Python, podemos lidar com exceções usando as instruções try e except.

Aqui está um exemplo de como lidar com uma exceção ZeroDivisionError:

try:
  x = 10 / 0
except ZeroDivisionError:
  print("Cannot divide by zero!")

Neste exemplo, o bloco try contém código que pode levantar uma exceção ZeroDivisionError. Se a exceção for levantada, o controle é passado para o bloco except, que lida com a exceção imprimindo uma mensagem de erro.

Também podemos lidar com múltiplas exceções no mesmo bloco try usando a instrução except com múltiplas exceções:

try:
  x = 10 / 0
  y = int('abc')
except ZeroDivisionError:
  print("Cannot divide by zero!")
except ValueError:
  print("Invalid input!")

Neste exemplo, o bloco try contém código que pode levantar um ZeroDivisionError ou um ValueError. Se um ZeroDivisionError for levantado, o bloco except com o ZeroDivisionError irá tratá-lo. Se um ValueError for levantado, o bloco except com o ValueError irá tratá-lo.

Levantando Exceções

Além de lidar com exceções, também podemos levantar exceções em nosso código usando a instrução raise.

Aqui está um exemplo de como levantar uma exceção ValueError:

def validate_age(age):
  if age < 0:
    raise ValueError("Age cannot be negative.")

try:
  validate_age(-1)
except ValueError as e:
  print(e)

Neste exemplo, a função validate_age levanta uma exceção ValueError se a idade for negativa. O bloco try chama a função validate_age com uma idade negativa, o que faz com que a exceção ValueError seja levantada. O bloco except lida com a exceção e imprime a mensagem de erro.

Capturando Todas as Exceções

Às vezes, podemos querer capturar todas as exceções que podem ser levantadas em um bloco try. Podemos fazer isso usando a instrução except sem especificar nenhuma exceção:

try:
  x = 10 / 0
  y = int('abc')
except:
  print("An error occurred!")

Neste exemplo, o bloco try contém código que pode levantar um ZeroDivisionError ou um ValueError. Se qualquer uma das exceções for levantada, ela será capturada pelo bloco except, que imprime uma mensagem de erro.

A Cláusula Else

Podemos usar a cláusula else em uma instrução try para especificar um bloco de código que deve ser executado somente se nenhuma exceção for levantada no bloco try:

try:
  x = int(input("Enter a number: "))
except ValueError:
  print("Invalid input!")
else:
  print("The number is", x)

Neste exemplo, o bloco try contém código que pode levantar um ValueError se o usuário inserir um valor inválido. Se nenhuma exceção for levantada, o bloco else é executado e o número é impresso.

A Cláusula Finally

Podemos usar a cláusula finally em uma instrução try para especificar um bloco de código que deve sempre ser executado, quer uma exceção seja levantada ou não:

try:
  x = int(input("Enter a number: "))
except ValueError:
  print("Invalid input!")
finally:
  print("Exiting program.")

Neste exemplo, o bloco try contém código que pode levantar um ValueError se o usuário inserir um valor inválido. Quer uma exceção seja levantada ou não, o bloco finally é sempre executado e o programa é encerrado.

Resumo

Neste laboratório, você aprendeu como identificar e corrigir erros de sintaxe em seu código Python, bem como como lidar com exceções usando as instruções try e except. Você também aprendeu como levantar exceções em seu código usando a instrução raise e como usar as cláusulas else e finally em uma instrução try.

Espero que este laboratório tenha sido útil e que você se sinta mais confiante trabalhando com erros de sintaxe e exceções em Python!