Contenido del curso

Estructuras de Datos y Funciones

Errores personalizados en Go

Resumen

Crear errores personalizados en Go te permite reemplazar mensajes confusos como stack overflow o memory exception por textos claros que tú defines. Esta práctica es clave para desarrolladores que buscan código mantenible, equipos que necesitan depurar rápido y usuarios finales que merecen mensajes entendibles.

¿Por qué conviene crear errores personalizados en Go?

Cuando una aplicación falla, el mensaje que devuelve marca la diferencia entre resolver el bug en minutos o pasar horas buscando la causa. Go te da las herramientas para que tú decidas qué leer cuando algo se rompe.

Imagina que tu cafetera falla. ¿Prefieres leer "se desbordó la memoria en el lote número 15" o "ya no hay café"? El segundo mensaje te dice exactamente qué pasó y cómo arreglarlo. Esa misma lógica aplica a cualquier sistema en producción.

¿Qué es un error personalizado en Go? Es una variable que tú declaras usando el paquete fmt o errors para definir un mensaje claro que reemplace los errores genéricos del lenguaje.

¿Cómo declarar errores personalizados con fmt.Errorf?

La receta es directa: importas los paquetes que necesitas y declaras tus errores como variables. Aquí entran en juego fmt para formatear el mensaje y errors como paquete dedicado al manejo de errores.

go package main

import ( "fmt" "errors" )

var errorDeCafe = fmt.Errorf("Ya no hay café") var errorDeEnergia = fmt.Errorf("Ya no hay electricidad")

Con estas dos variables ya tienes un catálogo de errores listos para devolver desde cualquier función. La ventaja: el mensaje viaja contigo a lo largo de toda la aplicación.

¿Qué función usar para retornar errores en Go?

Define una función que reciba un argumento y retorne un valor de tipo error. Si la condición se cumple, retornas tu error personalizado; si no, retornas nil.

go func HacerCafe(args int) error { if args == 2 { return errorDeCafe } else if args == 3 { return errorDeEnergia } return nil }

Fíjate en el detalle de sintaxis: en Go el else debe ir en la misma línea que la llave de cierre del if anterior. Si lo escribes en otra línea, el compilador marca error.

¿Cómo capturar y mostrar errores dentro de un ciclo for?

Una vez que tu función retorna errores, necesitas evaluarlos. El patrón clásico en Go es comparar el error contra nil y, si es diferente, decidir qué hacer según el tipo de error recibido.

go func main() { for i := 0; i < 5; i++ { err := HacerCafe(i) if err != nil { fmt.Println(err) } else { fmt.Println("Ya hay café") } } }

Al ejecutar go run main.go con un ciclo de 5 iteraciones, los valores 0 y 1 imprimen "Ya hay café" porque ninguna condición se cumple. En la iteración 2 aparece el mensaje "Ya no hay café" y en la 3 aparece "Ya no hay electricidad". Estás manipulando el flujo para que Go muestre exactamente lo que tú definiste.

¿Cuándo retornar nil en Go? Cuando la función no encuentra ninguna condición de error. Devolver nil indica que todo salió bien y evita falsos positivos en el manejo de errores.

¿Qué ventajas tiene usar errores personalizados frente a console.log?

Muchos desarrolladores recurren a imprimir variables por consola para rastrear bugs. En Go puedes saltarte ese paso si diseñas bien tus errores desde el inicio.

  • Claridad para el equipo: cualquier developer que lea el código entiende qué falló sin abrir documentación.
  • Mensajes para el usuario final: la persona que usa tu app recibe textos en lenguaje natural.
  • Depuración más rápida: identificas el punto exacto del fallo sin agregar Println temporales.
  • Código mantenible: tus errores viven como variables centralizadas, fáciles de actualizar.

Esta forma de trabajar le da calma a tu equipo y reduce el tiempo entre detectar un problema y resolverlo. ¿Ya tienes pensado qué errores personalizados implementarías en tu próximo proyecto en Go? Cuéntame en los comentarios cuál sería tu primer error personalizado.