Текст ошибки в Go
Значение типа error несет текст для
человека. Его читают методом Error:
результат имеет тип string. Тот же
текст появится, если вывести err
через fmt.Println.
Запишем функцию с неверным индексом и выведем сообщение после проверки:
package main
import (
"errors"
"fmt"
)
func itemAt(nums []int, index int) (int, error) {
if index < 0 || index >= len(nums) {
return 0, errors.New("bad index")
}
return nums[index], nil
}
func main() {
nums := []int{1, 2, 3}
_, err := itemAt(nums, 10)
if err != nil {
fmt.Println(err.Error())
}
}
На экран попадет строка "bad index".
При успешном вызове err равен nil,
и метод Error вызывать нельзя.
Проверим текст для четного аргумента и для нарушения правила:
package main
import (
"errors"
"fmt"
)
func requireEven(n int) error {
if n%2 != 0 {
return errors.New("even only")
}
return nil
}
func main() {
err := requireEven(3)
if err != nil {
fmt.Println(err.Error())
}
}
Дан срез целых чисел из трех элементов.
Получите элемент с индексом 10.
При сбое выведите текст ошибки в консоль.
Создайте функцию с параметром n,
которая для n <= 0 возвращает ошибку
с сообщением "not positive".
Вызовите ее с -2 и выведите текст
ошибки.