🧩 Exercícios: Tratamento Robusto de Exceções e ExceptionGroup no Python 3.11+
Spec Sistemas Com Python • Trilha Progressiva em 4 Níveis
🧭 Navegação Pedagógica
-
📖 Teoria do Capítulo 💻 Exemplos 📊 Slides 🧠 Quiz
🎯 Nível 1: Fundamentos
Problema 11.1 — Hierarquia de Exceções Customizadas de Domínio
Contexto: Hierarquia de Exceções Customizadas de Domínio no contexto de Tratamento Robusto de Exceções e ExceptionGroup no Python 3.11+.
Requisitos de Execução:
- Criar classe base
AppException(Exception)e exceções filhas com metadados de erro.
Resultado Esperado
Exceções ricas de domínio lançadas e tratadas com contexto.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_11_1_SeuNome - Envie na tarefa:
Atividade Cap 11 - Tratamento Robusto de Exceções e ExceptionGroup no Python 3.11+
🔑 Gabarito de Código & Solução Comentada
class DominioErro(Exception):
def __init__(self, codigo: str, mensagem: str) -> None:
super().__init__(f"[{codigo}] {mensagem}")
self.codigo = codigo
try:
raise DominioErro("SALDO_INSUFICIENTE", "Limite de credito excedido.")
except DominioErro as e:
print(f"Erro de Dominio interceptado: {e} (Cod: {e.codigo})")
🔍 Nível 2: Prática
Problema 11.2 — Encadeamento de Exceções com raise … from … (Exception Chaining)
Contexto: Encadeamento de Exceções com raise … from … (Exception Chaining) no contexto de Tratamento Robusto de Exceções e ExceptionGroup no Python 3.11+.
Requisitos de Execução:
- Transformar erro de baixo nível em exceção de alto nível preservando a causa raiz.
Resultado Esperado
Causa original preservada no traceback via `from err`.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_11_2_SeuNome - Envie na tarefa:
Atividade Cap 11 - Tratamento Robusto de Exceções e ExceptionGroup no Python 3.11+
🔑 Gabarito de Código & Solução Comentada
class BancoErro(Exception): pass
def carregar_usuario(id: int) -> None:
try:
int("invalido")
except ValueError as e:
raise BancoErro("Falha ao consultar usuario no banco.") from e
try:
carregar_usuario(1)
except BancoErro as err:
print(f"Erro capturado: {err} | Causa raiz: {err.__cause__}")
⚡ Nível 3: Integração
Problema 11.3 — Grupos de Exceções com ExceptionGroup e Cláusula except*
Contexto: Grupos de Exceções com ExceptionGroup e Cláusula except* no contexto de Tratamento Robusto de Exceções e ExceptionGroup no Python 3.11+.
Requisitos de Execução:
- Agrupar múltiplas falhas concorrentes em
ExceptionGroupe tratar comexcept* ValueError:.
Resultado Esperado
Múltiplas exceções assíncronas tratadas individualmente pela sintaxe `except*`.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_11_3_SeuNome - Envie na tarefa:
Atividade Cap 11 - Tratamento Robusto de Exceções e ExceptionGroup no Python 3.11+
🔑 Gabarito de Código & Solução Comentada
eg = ExceptionGroup("Falhas no processamento paralelo", [
ValueError("Valor invalido no worker 1"),
TypeError("Tipo incorreto no worker 2")
])
try:
raise eg
except* ValueError as e:
print(f"Tratando ValueErrors: {e.exceptions}")
except* TypeError as e:
print(f"Tratando TypeErrors: {e.exceptions}")
🏆 Nível 4: Desafio Corporativo
Problema 11.4 — Anotações em Exceções com .add_note() (Python 3.11+)
Contexto: Anotações em Exceções com .add_note() (Python 3.11+) no contexto de Tratamento Robusto de Exceções e ExceptionGroup no Python 3.11+.
Requisitos de Execução:
- Anexar notas contextuais em exceções capturadas sem alterar sua mensagem original com
e.add_note(...).
Resultado Esperado
Notas de auditoria e contexto corporativo anexadas ao erro para rastreabilidade.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_11_4_SeuNome - Envie na tarefa:
Atividade Cap 11 - Tratamento Robusto de Exceções e ExceptionGroup no Python 3.11+
🔑 Gabarito de Código & Solução Comentada
try:
raise RuntimeError("Falha de conexao com microsservico")
except RuntimeError as e:
e.add_note("Contexto: Tenant ID=BR_SP_01 | Tentativa #3")
print(f"Erro com notas anexadas: {e.__notes__}")
| ⬅️ Voltar ao Índice de Exercícios | 📚 Sumário de Tópicos |