CodeGym /Cursos /Python SELF PT /Manipulação de múltiplas exceções

Manipulação de múltiplas exceções

Python SELF PT
Nível 17 , Lição 3
Disponível

4.1 Captura de múltiplas exceções

Python permite lidar com várias exceções usando múltiplos blocos except ou um único bloco except com uma tupla de exceções. Vamos explorar os dois métodos.

Múltiplos blocos except

Você pode usar vários blocos except para lidar com diferentes tipos de exceções de maneiras distintas.


try:
    # Código que pode gerar uma exceção
    result = int("abc")
except ValueError:
    print("Erro: valor incorreto.")
except ZeroDivisionError:
    print("Erro: divisão por zero.")

Um bloco except com uma tupla de exceções

Você pode lidar com várias exceções em um único bloco except, passando-as como uma tupla.


try:
    # Código que pode gerar uma exceção
    result = int("abc")
except (ValueError, ZeroDivisionError) as e:
    print(f"Ocorreu um erro: {e}")

Uso de except NameError as var

Ao lidar com exceções, você pode usar a sintaxe except <ExceptionType> as <variable> para obter o objeto de exceção. Isso permite acessar informações sobre a exceção, como a mensagem de erro e outros atributos.


try:
    # Código que pode gerar NameError
    print(undeclared_variable)
except NameError as e:
    print(f"Ocorreu um erro: {e}")
    print(f"Tipo de erro: {type(e)}")

4.2 Escopo da variável de erro

A variável que armazena a exceção (e no exemplo acima) está disponível somente dentro do seu bloco except. Fora desse bloco a variável não está disponível.


try:
    # Código que pode gerar NameError
    print(undeclared_variable)
except NameError as e:
    print(f"Ocorreu um erro: {e}")
    print(f"Tipo de erro: {type(e)}")
# Aqui e já não está acessível, e a próxima linha irá gerar NameError
# print(e)  # NameError: nome 'e' não está definido

Se você quiser fazer algo importante com a exceção fora do seu bloco, então você precisa salvá-la em uma variável separada. Exemplo:


exception = None
try:
    # Código que pode gerar uma exceção
    result = int("abc")
except ValueError as e:
    exception = e
    print("Erro: valor incorreto.")
except ZeroDivisionError as e:
    exception = e
    print("Erro: divisão por zero.")

print(exception)

Observe que a variável exception armazena a última exceção ocorrida, o que pode ser útil para processamento posterior fora do bloco try.

4.3 O que é útil no erro

O objeto de exceção contém informações sobre o erro. Dependendo do tipo de exceção, o objeto pode conter diferentes atributos.

Aqui estão alguns atributos comuns disponíveis para a maioria das exceções:

  • args: Uma tupla contendo os argumentos passados durante a criação da exceção. Geralmente é a mensagem de erro.
  • message: Uma string contendo a mensagem de erro (em algumas exceções).
  • __str__: Método que retorna a representação em string da exceção. Este método é usado para obter a representação textual do erro, que será retornada ao usar a função print() no objeto de exceção.

Exemplo:


try:
    # Código que pode gerar ValueError
    result = int("abc")
except ValueError as e:
    print(f"Ocorreu um erro: {e}")
    print(f"Argumentos do erro: {e.args}")
    print(f"Mensagem de erro: {str(e)}")

Exemplo de manipulação de múltiplas exceções


try:
    # Código que pode gerar múltiplos tipos de exceções
    result = 10 / 0
except (ValueError, ZeroDivisionError) as e:
    print(f"Ocorreu um erro: {e}")
    print(f"Tipo de erro: {type(e)}")
    print(f"Argumentos do erro: {e.args}")

Se ocorrer um ValueError ou ZeroDivisionError, ele será capturado pelo bloco except. As informações sobre a exceção estarão disponíveis através da variável e. A saída conterá o tipo de erro e os argumentos passados durante a criação da exceção.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION