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.
1234567891011121314151617181920212223242526272829303132def 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?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo