Sobes.tech
Junior — Middle

¿Cómo se gestionan las excepciones y errores en su aplicación?

sobes.tech AI

Respuesta de la IA

En Go, la gestión de errores difiere de muchos otros lenguajes, ya que aquí no hay excepciones en el sentido habitual. En su lugar, las funciones generalmente devuelven un valor de error (error) como segundo resultado.

Enfoques principales:

  • Verificación de errores después de llamar a una función:

    result, err := someFunction()
    if err != nil {
        // manejo del error
        log.Println("Error:", err)
        return err
    }
    // continuar con el trabajo con result
    
  • Creación de tipos de errores propios usando errors.New o fmt.Errorf para mensajes más informativos.

  • Pánicos (panic) y recuperación (recover) se usan raramente, principalmente para errores críticos que no deberían ocurrir en el flujo normal.

  • Registro de errores y devolverlos hacia arriba en la pila para un manejo centralizado.

Ejemplo de manejo de errores:

package main

import (
    "errors"
    "fmt"
)

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("división por cero")
    }
    return a / b, nil
}

func main() {
    result, err := divide(10, 0)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }
    fmt.Println("Resultado:", result)
}

De esta forma, en Go los errores se manejan explícitamente, lo que aumenta la legibilidad y la fiabilidad del código.