python-error-handling
Faz seu agente lidar com erros e validar dados em Python. É útil para criar programas mais confiáveis que sabem como reagir a problemas.
O que ela faz
Esta habilidade ajuda a criar programas de computador em Python que lidam bem com erros. Ela ensina a verificar informações de entrada, usar mensagens de erro claras e a lidar com falhas sem que o programa inteiro pare.
Quando usar
- ✓Quando você precisa verificar se os dados que o usuário ou outro programa envia estão corretos.
- ✓Ao criar mensagens de erro que explicam o problema e como consertá-lo.
- ✓Quando um programa processa muitas coisas e uma falha em uma delas não deve parar tudo.
Exemplo do que pedir para a IA
“Como posso garantir que o número de páginas que o usuário pede esteja entre 1 e 100?”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
O programa verifica as informações recebidas logo no início. Se algo estiver errado, ele avisa imediatamente com uma mensagem clara. Se estiver processando vários itens, ele tenta continuar mesmo que um item falhe, registrando o que deu certo e o que deu errado.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add wshobson/agents --skill python-error-handlingOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/wshobson/agents/main/plugins/python-development/skills/python-error-handling/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Tratamento de Erros em Python
Crie aplicações Python robustas com validação de entrada adequada, exceções significativas e tratamento de falhas elegante. Um bom tratamento de erros facilita a depuração e torna os sistemas mais confiáveis.
Quando Usar Esta Habilidade
- Validar entrada do usuário e parâmetros de API
- Projetar hierarquias de exceção para aplicações
- Lidar com falhas parciais em operações em lote
- Converter dados externos para tipos de domínio
- Criar mensagens de erro amigáveis ao usuário
- Implementar padrões de validação "fail-fast" (falhar rápido)
Conceitos Principais
1. Falhar Rápido (Fail Fast)
Valide as entradas cedo, antes de operações custosas. Relate todos os erros de validação de uma vez, quando possível.
2. Exceções Significativas
Use tipos de exceção apropriados com contexto. As mensagens devem explicar o que falhou, por quê e como corrigir.
3. Falhas Parciais
Em operações em lote, não deixe que uma falha aborte tudo. Rastreie sucessos e falhas separadamente.
4. Preservar Contexto
Encadeie exceções para manter o rastro completo de erros para depuração.
Início Rápido
def fetch_page(url: str, page_size: int) -> Page:
if not url:
raise ValueError("'url' is required")
if not 1 <= page_size <= 100:
raise ValueError(f"'page_size' must be 1-100, got {page_size}")
# Now safe to proceed...
Padrões Fundamentais
Padrão 1: Validação Antecipada de Entrada
Valide todas as entradas nos limites da API antes que qualquer processamento comece.
def process_order(
order_id: str,
quantity: int,
discount_percent: float,
) -> OrderResult:
"""Process an order with validation."""
# Validate required fields
if not order_id:
raise ValueError("'order_id' is required")
# Validate ranges
if quantity <= 0:
raise ValueError(f"'quantity' must be positive, got {quantity}")
if not 0 <= discount_percent <= 100:
raise ValueError(
f"'discount_percent' must be 0-100, got {discount_percent}"
)
# Validation passed, proceed with processing
return _process_validated_order(order_id, quantity, discount_percent)
Padrão 2: Converter para Tipos de Domínio Cedo
Analise strings e dados externos em objetos de domínio tipados nos limites do sistema.
from enum import Enum
class OutputFormat(Enum):
JSON = "json"
CSV = "csv"
PARQUET = "parquet"
def parse_output_format(value: str) -> OutputFormat:
"""Parse string to OutputFormat enum.
Args:
value: Format string from user input.
Returns:
Validated OutputFormat enum member.
Raises:
ValueError: If format is not recognized.
"""
try:
return OutputFormat(value.lower())
except ValueError:
valid_formats = [f.value for f in OutputFormat]
raise ValueError(
f"Invalid format '{value}'. "
f"Valid options: {', '.join(valid_formats)}"
)
# Usage at API boundary
def export_data(data: list[dict], format_str: str) -> bytes:
output_format = parse_output_format(format_str) # Fail fast
# Rest of function uses typed OutputFormat
...
Padrão 3: Pydantic para Validação Complexa
Use modelos Pydantic para validação de entrada estruturada com mensagens de erro automáticas.
from pydantic import BaseModel, Field, field_validator
class CreateUserInput(BaseModel):
"""Input model for user creation."""
email: str = Field(..., min_length=5, max_length=255)
name: str = Field(..., min_length=1, max_length=100)
age: int = Field(ge=0, le=150)
@field_validator("email")
@classmethod
def validate_email_format(cls, v: str) -> str:
if "@" not in v or "." not in v.split("@")[-1]:
raise ValueError("Invalid email format")
return v.lower()
@field_validator("name")
@classmethod
def normalize_name(cls, v: str) -> str:
return v.strip().title()
# Usage
try:
user_input = CreateUserInput(
email="user@example.com",
name="john doe",
age=25,
)
except ValidationError as e:
# Pydantic provides detailed error information
print(e.errors())
Padrão 4: Mapear Erros para Exceções Padrão
Use os tipos de exceção integrados do Python apropriadamente, adicionando contexto conforme necessário.
| Tipo de Falha | Exceção | Exemplo |
|---|---|---|
| Entrada inválida | ValueError |
Valores de parâmetro incorretos |
| Tipo incorreto | TypeError |
Esperado string, recebido int |
| Item ausente | KeyError |
Chave de dicionário não encontrada |
…
Perguntas frequentes
Por que é importante verificar os dados logo no começo?
Verificar os dados no início (chamado de 'fail fast') evita que o programa gaste tempo e recursos processando informações inválidas, além de facilitar a identificação do problema.
O que são 'exceções significativas'?
São tipos de erro específicos (como `ValueError` ou `TypeError`) que dizem exatamente o que deu errado, por que aconteceu e como consertar, em vez de um erro genérico.
Como lidar com falhas em processamento de muitos itens?
Em vez de parar tudo se um item falhar, o programa pode registrar essa falha e continuar processando os outros itens, informando depois quais tiveram sucesso e quais falharam.
Detalhes
Descrição original do autor
Python error handling patterns including input validation, exception hierarchies, and partial failure handling. Use when implementing validation logic, designing exception strategies, handling batch processing failures, or building robust APIs.
repo: wshobson/agents
Popularidade
- Estrelas no GitHub
- 41 mil
- Posição no ranking
- #4928
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
screen-reader-testing
Faz seu agente testar sites usando leitores de tela para garantir que sejam acessíveis.
wshobson/agents
wcag-audit-patterns
Ajuda seu agente a auditar sites para acessibilidade e corrigir problemas de acordo com as diretrizes WCAG.
wshobson/agents
multi-reviewer-patterns
Faz seu agente coordenar revisões de código paralelas, deduplicando achados e consolidando relatórios.
wshobson/agents
parallel-debugging
Permite ao agente depurar problemas complexos com investigações paralelas e análise de causa raiz.
wshobson/agents
Skills parecidas
benchmark-optimization-loop
Faz seu agente melhorar a velocidade de algo de forma medida. Ele testa várias versões e escolhe a mais rápida que ainda funciona corretamente.
affaan-m/ECC
change-impact
Ajuda seu agente a analisar o impacto de mudanças no código antes de fazê-las. Ele compara o planejado com o real depois, cobrindo caminhos, dados, testes e documentação. É útil para mudanças arriscadas ou que afetam várias partes do sistema.
affaan-m/ECC
click-path-audit
Faz seu agente rastrear todos os botões e interações do usuário para achar bugs. Ele encontra problemas onde funções parecem funcionar sozinhas, mas falham juntas. Útil quando bugs persistem mesmo após depuração.
affaan-m/ECC