一键导入
go-error-handling
Manejo idiomático de errores en Go. Usar al diseñar errores para APIs, propagar errores entre capas, o crear tipos de error personalizados.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Manejo idiomático de errores en Go. Usar al diseñar errores para APIs, propagar errores entre capas, o crear tipos de error personalizados.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Guía para trabajar con StructureDefinitions y ElementDefinitions en FHIR. Usar cuando se necesite entender o manipular definiciones de estructura.
Diseño de arquitectura limpia y modular en Go. Usar al diseñar un nuevo módulo, definir capas y responsabilidades, u organizar código.
Benchmarks y profiling en Go. Usar al medir rendimiento, comparar implementaciones, o identificar bottlenecks.
Patrones de caching y pooling en Go. Usar al implementar caches, reducir allocations, o cachear resultados costosos.
Revisión de código Go. Usar al revisar PRs, verificar calidad de código, o identificar problemas potenciales.
Composición, embedding y extensibilidad en Go. Usar al extender tipos existentes o combinar comportamientos.
| name | go-error-handling |
| description | Manejo idiomático de errores en Go. Usar al diseñar errores para APIs, propagar errores entre capas, o crear tipos de error personalizados. |
| allowed-tools | Read, Grep, Glob |
Manejo idiomático de errores en Go.
// ✅ BIEN: Añadir contexto
if err != nil {
return fmt.Errorf("loading profile %s: %w", url, err)
}
// ❌ MAL: Sin contexto
if err != nil {
return err
}
type EvalError struct {
Type ErrorType
Message string
Position Position
Underlying error
}
func (e *EvalError) Error() string {
return fmt.Sprintf("%s: %s", e.Type, e.Message)
}
func (e *EvalError) Unwrap() error {
return e.Underlying
}
var (
ErrNotFound = errors.New("not found")
ErrInvalidInput = errors.New("invalid input")
)
// Verificar tipo de error
if errors.Is(err, ErrNotFound) {
// Manejar caso no encontrado
}
// ✅ BIEN
if errors.Is(err, ErrNotFound) { }
var evalErr *EvalError
if errors.As(err, &evalErr) {
log.Printf("Error at line %d", evalErr.Position.Line)
}
type Issue struct {
Severity Severity // error, warning, information
Code string
Diagnostics string
Location []string
}
type ValidationResult struct {
Valid bool
Issues []Issue
}
- [ ] ¿Los errores tienen contexto suficiente?
- [ ] ¿Se usa %w para wrapping?
- [ ] ¿Se implementa Unwrap() para chains?
- [ ] ¿Se usa errors.Is/As en lugar de comparación?