Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать далее.

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

Вы явно обрабатываете ошибки в Go, что приводит к созданию прочной основы для обратной связи с возможностью согласованной реализации логики повторных попыток. ошибки Пакет предоставляет дополнительную функциональность для обработки ошибок.

Пакет ошибок

Пакет ошибок является одним из пакетов стандартной библиотеки Go. Пакет предоставляет простые примитивы и функции обработки ошибок для последовательного создания и обработки ошибок в коде Go.

Пакет обеспечивает

instagram viewer
Новый функция для создания ошибок с пользовательскими сообщениями об ошибках, которые можно использовать так же, как и любой встроенный тип ошибки, например ноль и Ошибка метод ошибка интерфейс.

ошибки package также предоставляет функциональные возможности для переноса и распаковки ошибок, метод утверждения типа для ошибок.

Вы можете импортировать ошибки package с ключевым словом import. Просто укажите имя пакета в вашем списке импорта.

Импортировать"ошибки"

Отлов и обработка ошибок в Go

Знание основ обработки ошибок в Go закладывает основу для понимания ошибки упаковка. Функции и методы возвращают ошибки, сопровождаемые ресурсом.

Вот пример обработки ошибок при открытии файла со встроенной Операционные системы упаковка.

упаковка основной

Импортировать (
"ФМТ"
"Операционные системы"
)

функцияосновной() {
файл, ошибка := os. Открыть("имя файла.txt")

если ошибся != ноль {
ФМТ. Println (ошибка)
}

// ...
}

Открыть метод Операционные системы Пакет полезен, когда работа с текстовыми файлами в Go. Он открывает файл, возвращая экземпляр открытого файла и ошибка.

Значение ошибки может быть ноль тип, указывающий на отсутствие ошибок. Однако вы можете проверить регистр, отличный от нуля, и обработать ошибку, если она присутствует. В приведенном выше случае блок if выводит ошибку.

Вы можете получить доступ к Ошибка метод ошибки для извлечения дополнительной информации об ошибке (обычно описание).

если ошибся != ноль {
ФМТ. Распечатать (ошиб. Ошибка())
}

Например, если файл не существует, вы увидите сообщение об ошибке, которое выглядит примерно так:

Создание ошибок в Go

Вы можете создавать ошибки с помощью Новый метод ошибки упаковка. Этот метод принимает строковое сообщение и возвращает обнаруженные ошибки.

Импортировать"ошибки"

функцияосновной() {
ошибка := ошибки. Новый("что-то пошло не так")

если ошибся != ноль {
// здесь находится код обработки ошибок
}
}

основной функция создает новую ошибку и обрабатывает возможные ошибки от создания ошибки с если заявление.

Вы также можете определить собственные ошибки в Go. Традиционный метод использует структуру и функцию ошибки для реализации структуры на основе функциональности ошибки.

упаковка основной

Импортировать"ФМТ"

тип customError структура {
Информация нить
}

функцияосновной() {
// пример создания структуры
ошибка := customError{
Информация: "Что-то пошло не так!",
}

// вывод экземпляра структуры
ФМТ. Println (ошибка)
}

customError struct — это план ошибки, а Информация строковое поле будет содержать сообщение об ошибке.

Ваши функции ошибок могут реализовать customError struct и вернуть строку ошибки.

функция(ce customError)Ошибка()нить {
возвращаться ФМТ. Спринтф("Произошла пользовательская ошибка: %v", ce.info)
}

Ошибка метод customError структура возвращает строку, используя метод форматирования Sprintf пакета fmt.

Обтекание и распаковка ошибок в Go

Вы можете добавить дополнительную контекстную информацию к ошибкам, обернув их. В первую очередь вы будете использовать завернутые ошибки для создания четких сообщений об ошибках для точности отладки.

Вы можете использовать Ошибкаf метод ФМТ пакет, предоставляющий функции форматирования сообщений об ошибках для переноса ошибок. Ошибкаf метод принимает строку и глагол форматирования строки, а также ошибку и возвращает обернутую ошибку.

Импортировать (
"ФМТ"
"Операционные системы"
)

функцияосновной() {
_, эрр := ос. Открыть("имя файла.txt")

если ошибся != ноль {
завернутыйErr := fmt. Ошибкаf("Ошибка открытия файла: %v", ошибся)
ФМТ. Println (обернутый Err)
}
}

основной функция открывает файл с Операционные системы пакет Открыть метод и оборачивает ошибку методом Errorf ФМТ упаковка. Затем он выводит обернутую ошибку на консоль.

Вы можете развернуть упакованные ошибки в своих программах с помощью команды Развернуть метод ошибки упаковка. Развернуть Метод принимает завернутую ошибку и возвращает развернутую ошибку.

Импортировать (
"ФМТ"
"Операционные системы"
"ошибки"
)

функцияосновной() {
_, эрр := ос. Открыть("имя файла.txt")

если ошибся != ноль {
завернутыйErr := fmt. Ошибкаf("Ошибка открытия файла: %v", ошибся)
unwrappedErr := ошибки. Развернуть (wrappedErr)
ФМТ. Println (развернутыйErr)
}
}

основной функция оборачивает ошибку операции открытия файла, а unwrappedErr переменная содержит развернутую ошибку.

Регистрируйте свои отчеты об ошибках с помощью этих сторонних пакетов ведения журналов

Вам потребуется зарегистрировать некоторые ошибки для последующего просмотра, отладки и других операций в процессе разработки приложения. Вы можете использовать разряд пакеты Uber, Logrus, Zerolog и Log15 для быстрого и структурированного ведения журналов.