Читатели като вас помагат в подкрепа на MUO. Когато правите покупка чрез връзки на нашия сайт, ние може да спечелим комисионна за партньор. Прочетете още.

Обработката на грешки е една от честите операции в цикъла на разработка на софтуер. Това е ключов аспект на доброто програмиране. Go използва прост и лесен за използване подход с вградения си механизъм за обработка на грешки. Базира се на връщане на грешки от функции и методи, което ви позволява да се съсредоточите върху функционалността на кода, която е интуитивна и лесна за четене.

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

Пакетът за грешки

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

instagram viewer

Пакетът осигурява Нов функция за създаване на грешки с персонализирани съобщения за грешка, които можете да използвате по същия начин като всеки вграден тип грешка, като например нула и Грешка метод на грешка интерфейс.

The грешки пакет също така предоставя функционалност за опаковане и разопаковане на грешки, метод за твърдения на тип за грешки.

Можете да импортирате грешки пакет с ключовата дума import. Просто посочете името на пакета във вашия списък с импортирания.

импортиране"грешки"

Прихващане и обработка на грешки в Go

Познаването на основната обработка на грешки в Go поставя основата за разбиране на грешки пакет. Функциите и методите връщат грешки, които са придружени от ресурс.

Ето пример за обработка на грешки от операция за отваряне на файл с вградения операционна система пакет.

пакет основен

импортиране (
"fmt"
"операционна система"
)

функосновен() {
файл, грешка := os. отворено("име на файл.txt")

ако грешка!= нула {
fmt. Println (грешка)
}

// ...
}

The Отворете метод на операционна система пакетът е полезен, когато работа с текстови файлове в Go. Той отваря файл, връща отворен екземпляр на файл и an грешка.

Стойността на грешката може да бъде нула тип, което показва, че няма грешки. Можете обаче да проверите за случай, различен от нула, и да обработите грешка, ако е налице. В горния случай блокът if отпечатва грешката.

Можете да получите достъп до Грешка метод за грешка за извличане на повече информация за грешката (обикновено описание).

ако грешка!= нула {
fmt. Println (грешка. грешка ())
}

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

Създаване на грешки в Go

Можете да създадете грешки с Нов метод на грешки пакет. Този метод приема съобщение от низ и връща открити грешки.

импортиране"грешки"

функосновен() {
err := грешки. Ново("нещо се обърка")

ако грешка!= нула {
// тук влиза кодът за обработка на грешки
}
}

The основен създава нова грешка и обработва възможните грешки от създаването на грешка с an ако изявление.

Можете също да дефинирате персонализирани грешки в Go. Конвенционалният метод използва структура и функция за грешка, за да имплементира структурата въз основа на функционалността на грешката.

пакет основен

импортиране"fmt"

Тип customError структура {
инфо низ
}

функосновен() {
// примерна инстанция на структурата
err := customError{
информация: "Нещо се обърка!",
}

// изведе екземпляра на структурата
fmt. Println (грешка)
}

The customError struct е планът за грешката и инфо полето за низ ще съдържа съобщението за грешка.

Вашите функции за грешки могат да реализират customError struct и връща низ за грешка.

функ(ce customError)Грешка()низ {
връщане fmt. Sprintf(„Възникна персонализирана грешка: %v“, ce.info)
}

The Грешка метод на customError struct връща низ с помощта на методът за форматиране Sprintf на пакета fmt.

Грешки при опаковане и разопаковане в Go

Можете да добавите допълнителна контекстуална информация към грешките, като ги обвиете. Ще използвате предимно опаковани грешки, за да създадете ясни съобщения за грешка за прецизност при отстраняване на грешки.

Можете да използвате Errorf метод на fmt пакет, който предоставя функционалност за форматиране на съобщения за грешка, за да обвие грешките. The Errorf метод приема низ и глагол за форматиране на низ и грешката и връща обвитата грешка.

импортиране (
"fmt"
"операционна система"
)

функосновен() {
_, грешка := ос. отворено("име на файл.txt")

ако грешка!= нула {
wrappedErr := fmt. Errorf(„Грешка при отваряне на файл: %v“, грешка)
fmt. Println (wrappedErr)
}
}

The основен функция отваря файл с операционна система пакети Отворете метод и обвива грешката с метода Errorf на fmt пакет. След това извежда обвитата грешка на конзолата.

Можете да разопаковате опаковани грешки във вашите програми с Разопаковайте метод на грешки пакет. The Разопаковайте метод приема обвитата грешка и връща разопакованата грешка.

импортиране (
"fmt"
"операционна система"
"грешки"
)

функосновен() {
_, грешка := ос. отворено("име на файл.txt")

ако грешка!= нула {
wrappedErr := fmt. Errorf(„Грешка при отваряне на файл: %v“, грешка)
unwrappedErr := грешки. Разопаковане (wrappedErr)
fmt. Println (unwrappedErr)
}
}

The основен функцията обвива грешка от операция за отваряне на файл и unwrappedErr променливата съдържа разопакованата грешка.

Регистрирайте отчетите си за грешки с тези пакети за регистриране на трети страни

Ще трябва да регистрирате някои грешки за по-късни прегледи, отстраняване на грешки и други операции по време на процеса на разработка на вашето приложение. Можете да използвате зап пакет от пакети Uber, Logrus, Zerolog и Log15 за бързо, структурирано регистриране.