Функция errors.Join
Функция errors.Join объединяет одну или несколько ошибок в одну составную ошибку.
Первый параметр и последующие параметры принимают ошибки (тип error).
Функция возвращает новую ошибку, которая содержит все переданные ошибки.
Если передать nil, то она будет проигнорирована.
Если все ошибки равны nil, функция возвращает nil.
Синтаксис
errors.Join(err1, err2, errN)
Пример
Объединим две разные ошибки в одну:
package main
import (
"errors"
"fmt"
)
func main() {
err1 := errors.New("ошибка первая")
err2 := errors.New("ошибка вторая")
err := errors.Join(err1, err2)
fmt.Println(err)
}
Результат выполнения кода:
"ошибка первая\nошибка вторая"
Пример
Если одна из ошибок равна nil, она игнорируется:
package main
import (
"errors"
"fmt"
)
func main() {
err1 := errors.New("ошибка")
err2 := errors.Join(err1, nil)
fmt.Println(err2)
}
Результат выполнения кода:
"ошибка"
Пример
Если передать только nil, функция вернет nil:
package main
import (
"errors"
"fmt"
)
func main() {
err := errors.Join(nil)
fmt.Println(err)
}
Результат выполнения кода:
"<nil>"
Смотрите также
-
функцию
errors.Is,
которая проверяет, содержит ли ошибка определенный тип -
функцию
errors.As,
которая извлекает ошибку определенного типа -
функцию
errors.Unwrap,
которая возвращает внутреннюю ошибку -
функцию
errors.New,
которая создает новую ошибку с текстом