Тип strconv.NumError
Тип strconv.NumError представляет ошибку,
возникающую при преобразовании строкового значения в
числовое с помощью функций пакета strconv.
Этот тип содержит три поля: Func - имя функции,
в которой произошла ошибка, Num - строка,
которую пытались преобразовать, и Err -
основная причина ошибки (обычно strconv.ErrSyntax
или strconv.ErrRange).
Синтаксис
type NumError struct {
Func string
Num string
Err error
}
Пример
Давайте попробуем преобразовать строку, содержащую
нечисловые символы, и обработаем ошибку типа
strconv.NumError:
package main
import (
"fmt"
"strconv"
)
func main() {
_, err := strconv.Atoi("abc")
if err != nil {
if numErr, ok := err.(*strconv.NumError); ok {
fmt.Println("Func:", numErr.Func)
fmt.Println("Num:", numErr.Num)
fmt.Println("Err:", numErr.Err)
}
}
}
Результат выполнения кода:
"Func: Atoi"
"Num: abc"
"Err: syntax error"
Пример
Давайте попробуем преобразовать число, выходящее за пределы диапазона типа, и обработаем ошибку:
package main
import (
"fmt"
"strconv"
)
func main() {
_, err := strconv.ParseInt("9999999999999999999", 10, 64)
if err != nil {
if numErr, ok := err.(*strconv.NumError); ok {
fmt.Println("Func:", numErr.Func)
fmt.Println("Num:", numErr.Num)
fmt.Println("Err:", numErr.Err)
}
}
}
Результат выполнения кода:
"Func: ParseInt"
"Num: 9999999999999999999"
"Err: value out of range"
Пример
Давайте проверим, является ли ошибка именно ошибкой
синтаксиса, с помощью сравнения с константой
strconv.ErrSyntax:
package main
import (
"fmt"
"strconv"
)
func main() {
_, err := strconv.ParseFloat("1.2.3", 64)
if err != nil {
if numErr, ok := err.(*strconv.NumError); ok {
if numErr.Err == strconv.ErrSyntax {
fmt.Println("This is a syntax error")
}
}
}
}
Результат выполнения кода:
"This is a syntax error"
Смотрите также
-
константу
strconv.ErrSyntax,
которая указывает на синтаксическую ошибку в строке -
константу
strconv.ErrRange,
которая указывает на выход числа за допустимый диапазон -
функцию
strconv.Atoi,
которая преобразует строку в целое число -
функцию
strconv.ParseInt,
которая преобразует строку в целое число с указанием системы счисления