📊 Capítulo 11: Exceções & Context Managers
Especialização em Sistemas com Python
🗺️ O Protocolo de Gerenciamento de Contexto (with Statement)
sequenceDiagram
autonumber
actor C as Código Python (with Conexao() as conn:)
participant CM as Context Manager (Objeto Gerenciador)
participant BLK as Bloco de Código Interno
C->>CM: __enter__()
CM-->>C: Retorna recurso aberto (atribuído a 'as conn')
C->>BLK: Executa instruções de negócio
alt Sucesso no Bloco
BLK-->>CM: Finaliza sem erros
CM->>CM: __exit__(None, None, None) -> Fecha recurso com segurança! ⚡
else Erro no Bloco (Dispara Exceção)
BLK-->>CM: Lança Exceção
CM->>CM: __exit__(exc_type, exc_val, traceback) -> Rollback e Liberação Garantida!
end
🎯 Slide 1: A Estrutura Completa try / except / else / finally
try:
resultado = processar_arquivo()
except FileNotFoundError as e:
logger.error("Arquivo ausente: %s", e)
else:
# Executa APENAS se o bloco try não gerou nenhuma exceção!
enviar_notificacao_sucesso()
finally:
# Executa SEMPRE (com erro ou com sucesso):
limpar_temporarios()
🎯 Slide 2: Context Managers Fáceis com @contextmanager
from contextlib import contextmanager
@contextmanager
def temporizador(rotulo: str):
inicio = time.perf_counter()
try:
yield
finally:
fim = time.perf_counter()
print(f"[{rotulo}] Tempo: {fim - inicio:.4f}s")
🎯 Slide 3: Exception Groups e except* (Python 3.11+)
- Permite capturar e tratar múltiplas exceções simultâneas disparadas por tarefas concorrentes paralelas sem perder nenhum traceback!
🔗 Navegação do Capítulo 11
| 📖 Ler Conteúdo Completo | 🧠 Fazer Quiz | 💻 Ver Exemplos | 🧩 Exercícios |
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim