5.2 Creating Errors

Using errors.New

The simplest way to create an error is using errors.New:

import "errors"

err := errors.New("something went wrong")

Using fmt.Errorf

For formatted error messages, use fmt.Errorf:

err := fmt.Errorf("invalid value: %d", value)

Complete example

package main

import (
    "errors"
    "fmt"
)

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("division by zero")
    }
    return a / b, nil
}

func validateAge(age int) error {
    if age < 0 {
        return fmt.Errorf("age cannot be negative: %d", age)
    }
    if age > 150 {
        return fmt.Errorf("age seems invalid: %d", age)
    }
    return nil
}

func main() {
    result, err := divide(10, 2)
    if err != nil {
        fmt.Println("Error:", err)
    } else {
        fmt.Println("Result:", result)
    }

    if err := validateAge(-5); err != nil {
        fmt.Println("Validation error:", err)
    }
}