Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Compreendendo a Hierarquia de Exceções | Tratamento de Erros Abrangente
Programação Estrutural em Python

Compreendendo a Hierarquia de Exceções

Deslize para mostrar o menu

Ao trabalhar com tratamento de erros em Python, é importante compreender a estrutura das classes de exceção internas. Todas as exceptions herdam da classe raiz BaseException. A maioria das exceções tratadas no código do dia a dia são subclasses de Exception, que por sua vez é filha direta de BaseException. Essa estrutura permite capturar categorias amplas de erros ou lidar com problemas específicos.

Exceções comumente utilizadas, como ValueError, TypeError, KeyError e IOError (também conhecida como OSError nas versões modernas do Python), são todas subclasses de Exception. Existem também exceções mais especializadas, como ZeroDivisionError e IndexError, que herdam dessas classes gerais. Algumas exceções, como KeyboardInterrupt e SystemExit, herdam diretamente de BaseException — geralmente não devem ser capturadas em programas normais.

Compreender essa hierarquia ajuda a escrever blocos try/except mais precisos, capturando apenas o que for necessário e evitando mascarar sinais críticos do sistema.

1234567891011121314151617181920212223242526272829303132
def raise_and_catch_exceptions(): # Catching a ValueError try: int("not a number") except ValueError as ve: print("Caught ValueError:", ve) # Catching a ZeroDivisionError (subclass of ArithmeticError) try: result = 10 / 0 except ZeroDivisionError as zde: print("Caught ZeroDivisionError:", zde) # Catching a TypeError try: result = "10" + 5 except TypeError as te: print("Caught TypeError:", te) # Catching an OSError (formerly IOError) try: open("file_that_does_not_exist.txt") except OSError as oe: print("Caught OSError:", oe) # Catching a general Exception (will catch most, but not all, exceptions) try: raise KeyError("missing key") except Exception as e: print("Caught Exception:", type(e).__name__, "-", e) raise_and_catch_exceptions()

1. Qual classe de exceção embutida você usaria para capturar erros ao tentar converter uma string para inteiro que não pode ser convertida?

2. Qual exceção embutida é levantada ao tentar acessar uma chave de dicionário que não existe?

question mark

Qual classe de exceção embutida você usaria para capturar erros ao tentar converter uma string para inteiro que não pode ser convertida?

Selecione a resposta correta

question mark

Qual exceção embutida é levantada ao tentar acessar uma chave de dicionário que não existe?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 1

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 1. Capítulo 1
some-alt