РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
100 of 1593 menu

Ошибка strconv.ErrRange

Ошибка strconv.ErrRange возникает в пакете strconv, когда при преобразовании строки в число результат выходит за пределы допустимого диапазона целевого типа. Эта ошибка возвращается функциями парсинга, такими как ParseInt, ParseUint, ParseFloat и другими. Она сигнализирует о том, что число в строке слишком большое или слишком маленькое для представления в указанном типе данных.

Ошибка ErrRange является константой типа error и обычно используется вместе с типом *strconv.NumError, который содержит дополнительную информацию о возникшей ошибке. Эта ошибка позволяет разработчику корректно обработать ситуацию, когда входные данные не соответствуют ожидаемому числовому диапазону.

Синтаксис

var ErrRange = errors.New("value out of range")

Ошибка возвращается функциями парсинга в составе структуры *strconv.NumError, поле Err которой содержит ссылку на ErrRange.

Пример

Давайте попробуем преобразовать строку с числом, превышающим максимальное значение для типа int8:

package main import ( "fmt" "strconv" ) func main() { val := "128" res, err := strconv.ParseInt(val, 10, 8) if err != nil { if err.(*strconv.NumError).Err == strconv.ErrRange { fmt.Println("Value out of range for int8") } fmt.Println(err) } else { fmt.Println(res) } }

Результат выполнения кода:

"Value out of range for int8" "strconv.ParseInt: parsing \"128\": value out of range"

Пример

Рассмотрим ситуацию с преобразованием отрицательного числа в беззнаковый тип uint16:

package main import ( "fmt" "strconv" ) func main() { val := "-1" res, err := strconv.ParseUint(val, 10, 16) if err != nil { if err.(*strconv.NumError).Err == strconv.ErrRange { fmt.Println("Negative value cannot be parsed to uint") } fmt.Println(err) } else { fmt.Println(res) } }

Результат выполнения кода:

"Negative value cannot be parsed to uint" "strconv.ParseUint: parsing \"-1\": value out of range"

Пример

Теперь рассмотрим обработку ошибки при преобразовании с плавающей точкой, когда значение выходит за пределы типа float32:

package main import ( "fmt" "strconv" ) func main() { val := "3.4028236e+39" res, err := strconv.ParseFloat(val, 32) if err != nil { if err.(*strconv.NumError).Err == strconv.ErrRange { fmt.Println("Value exceeds float32 max limit") } fmt.Println(err) } else { fmt.Println(res) } }

Результат выполнения кода:

"Value exceeds float32 max limit" "strconv.ParseFloat: parsing \"3.4028236e+39\": value out of range"

Смотрите также

  • функцию strconv.ParseInt,
    которая преобразует строку в целое число с проверкой диапазона
  • функцию strconv.ParseUint,
    которая преобразует строку в беззнаковое целое число
  • функцию strconv.ParseFloat,
    которая преобразует строку в число с плавающей точкой
  • ошибку strconv.ErrSyntax,
    которая возникает при синтаксически неверном формате числа
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить