English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriales básicos de Golang

Sentencias de control de Golang

Funciones & Métodos de Golang

Estructuras de Golang

Cortes & Arreglos de Golang

Cadenas (String) de Golang

Punteros de Golang

Interfaces de Golang

Concurrencia de Golang

Excepciones (Error) de Golang

Otros aspectos de Golang

Manejo de errores del lenguaje Go (Error)

Go no tiene un try como en Java / catch tales excepciones, no podemos lanzar excepciones en Go.

Go utiliza otro mecanismo, conocido comoMecanismo de pánico diferido y recuperación

Go maneja errores simples en funciones y métodos devolviendo un objeto de error. El objeto de error puede ser el único o el último valor de retorno. Si no hay errores en la función, el objeto de error es nil.

Siempre verifiquemos los errores en la declaración de llamada, ya sea que recibamos o no un error.

Nunca ignoremos los errores, ya que pueden causar que el programa se bloquee.

El método que Go utiliza para detectar y reportar errores es

  • Las funciones que pueden causar errores devolverán dos variables: un valor y un código de error, si tiene éxito, nil; si hay condiciones de error, != nil.

  • Verifique los errores después de la llamada a la función. Si ocurre un error (if error != nil), detenga la ejecución de la función real (o todo el programa si es necesario).

Go tiene un tipo de interfaz de error predefinido

type error interface {
    Error() string
}	

Podemos usar la función error.New del paquete de errores para definir tipos de errores y proporcionar mensajes de error adecuados, por ejemplo:

err := errors.New("math - raíz cuadrada de número negativo")

Ejemplo de error

package main
import "errors"
import "fmt"
import "math"
func Sqrt(value float64) (float64, error) {
   if (value < 0) {
      return 0, errors.New("Math: raíz cuadrada de número negativo")
   }
   return math.Sqrt(value), nil
}
func main() {
   result, err := Sqrt(-64)
   if err != nil {
      fmt.Println(err)
   } else {
      fmt.Println(result)
   }
   result, err = Sqrt(64)
   if err != nil {
      fmt.Println(err)
   } else {
      fmt.Println(result)
   }
}

Salida:

Matemáticas: raíz cuadrada de números negativos
8