Spec Sistemas Com Python • Trilha Progressiva em 4 Níveis


🧭 Navegação Pedagógica


🎯 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:

  1. 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)

  1. Salve o arquivo como: Atividade_11_1_SeuNome
  2. 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:

  1. 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)

  1. Salve o arquivo como: Atividade_11_2_SeuNome
  2. 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:

  1. Agrupar múltiplas falhas concorrentes em ExceptionGroup e tratar com except* ValueError:.

Resultado Esperado

Múltiplas exceções assíncronas tratadas individualmente pela sintaxe `except*`.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_11_3_SeuNome
  2. 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:

  1. 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)

  1. Salve o arquivo como: Atividade_11_4_SeuNome
  2. 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