Capítulo 11: Tratamento Robusto de Exceções, Exceções de Domínio e ExceptionGroup
Especialização em Sistemas com Python & POO com Type Hints • Capítulo 11
🗺️ Mapa Conceitual do Tópico
flowchart TD
A["Operação de Risco"] --> B{"try / except"}
B -->|Exceção de Negócio| C["Captura ExcecaoDominio"]
B -->|Múltiplos Erros em Lote| D["Captura ExceptionGroup (PEP 654)"]
B -->|Sucesso Total| E["Cláusula else: Prosseguir"]
C & D & E --> F["Cláusula finally: Fechar Recursos"]
style A fill:#e1f5fe,stroke:#03a9f4,stroke-width:2px
style C fill:#ffebee,stroke:#f44336,stroke-width:2px
style D fill:#ede7f6,stroke:#7e57c2,stroke-width:2px
style E fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
🛡️ 1. Tratamento Defensivo e Hierarquia de Exceções
O tratamento de exceções em Python é estruturado em try-except-else-finally:
else: Executado somente se nenhuma exceção ocorrer no blocotry.finally: Executado incondicionalmente para liberação de recursos.raise NovoErro() from erro_original: Encadeamento de exceções (Exception Chaining / PEP 3134).ExceptionGroup(Python 3.11+ / PEP 654): Agrupa múltiplas exceções ocorridas em tarefas concorrentes ou processamento em lote.
💻 Exemplo Prático e Tipado
"""
exemplo_11_tratamento_de_excecoes.py - Exceções de Domínio e Encadeamento
"""
class SaldoInsuficienteError(Exception):
"""Exceção de domínio disparada quando o saque excede o saldo."""
def __init__(self, saldo_atual: float, valor_saque: float) -> None:
super().__init__(f"Saldo insuficiente ({saldo_atual:.2f}) para o saque solicitado ({valor_saque:.2f}).")
self.saldo_atual = saldo_atual
self.valor_saque = valor_saque
def realizar_debito(saldo: float, valor: float) -> float:
if valor > saldo:
raise SaldoInsuficienteError(saldo, valor)
return saldo - valor
if __name__ == "__main__":
try:
novo_saldo = realizar_debito(saldo=100.0, valor=250.0)
except SaldoInsuficienteError as err:
print(f"[FALHA DE NEGÓCIO] {err}")
🔗 Recursos Pedagógicos do Capítulo 11
| Recurso Didático | Finalidade | Link de Acesso |
|---|---|---|
| 📊 Slides de Aula | Apresentação visual interativa com Dark Mode e suporte a teclado | Ver Slides |
| 🧠 Quiz Formativo | Teste interativo de fixação com feedback imediato por alternativa | Fazer Quiz |
| 💻 Exemplos de Código | Demonstrações funcionais com Type Hints e saída no console | Ver Exemplos |
| 🧩 Exercícios em 4 Níveis | Lista progressiva de fixação com gabarito em bloco colapsável | Resolver Exercícios |
| 📜 Capítulo Anterior | 📚 Sumário de Tópicos | 📁 Próximo Capítulo |