馃敊 Regresar

Manejo de errores de base de datos:

Gestionar los errores de la base de datos en Go es fundamental para crear aplicaciones robustas y fiables. El paquete database/sql proporciona mecanismos para el manejo de errores que puedan producirse durante las operaciones con la base de datos.

Comprobaci贸n de errores en ejecuci贸n de consultas

Al ejecutar consultas u operaciones que interact煤en con la base de datos, comprobar siempre el error devuelto.

Ejemplo:

// Asumir que 'db' es una conexi贸n *sql.DB

rows, err := db.Query("SELECT * FROM users")

if err != nil {

// Manejar error

log.Fatal(err)

}

defer rows.Close()

// Procesar las filas devueltas

Manejo de errores con sentencias preparadas

Al utilizar sentencias preparadas, gestionar el error devuelto por la preparaci贸n de la sentencia y su ejecuci贸n.

Ejemplo:

// Asumir que 'db' es una conexi贸n *sql.DB

stmt, err := db.Prepare("INSERT INTO users(name, age) VALUES(?, ?)")

if err != nil {

// Manejar error

log.Fatal(err)

}

defer stmt.Close()

// Ejecutar sentencia preparada con par谩metros

_, err = stmt.Exec("Alice", 25)

if err != nil {

// Manejar error de ejecuci贸n

log.Fatal(err)

}

Manejo de errores de transacci贸n

Durante las transacciones, asegurar gestionar los errores que puedan producirse en el proceso de confirmar o deshacer la transacci贸n.

Ejemplo:

// Asumir que 'tx' es un objeto de transacci贸n *sql.Tx

err = tx.Commit()

if err != nil {

// Manejar error de confirmaci贸n ...

// Revertir la transacci贸n si falla la confirmaci贸n

if rbErr := tx.Rollback(); rbErr != nil {

// Gestionar error de rollback si es necesario

}

log.Fatal(err)

}

Registro e informe de errores

Utilizar mecanismos de logging adecuados para registrar los errores. Puede ser registrarlos en consola, en archivo o en un servicio de registro, seg煤n las necesidades de la aplicaci贸n.

Ejemplo:

if err != nil {

// Log error

log.Println("Error:", err)

// Manejar error en consecuencia

}

Envoltura de errores y contexto

Considerar usar paquetes como github.com/pkg/errors o el paquete de errores est谩ndar para a帽adir contexto a los errores. Esto ayuda a comprender mejor el contexto en el que se produjo el error.

Ejemplo:

import (

"github.com/pkg/errors"

)

func fetchDataFromDB() error {

// ...

if err != nil {

return errors.Wrap(err, "fetching data from database")

}

}