Zpracování chyb je jednou z častých operací v cyklu vývoje softwaru. Je to důležitý aspekt dobrého programování. Go má jednoduchý a snadno použitelný přístup s vestavěným mechanismem pro zpracování chyb. Je založen na vracení chyb z funkcí a metod, což vám umožňuje soustředit se na funkčnost kódu, která je intuitivní a snadno čitelná.
Chyby v Go zpracováváte explicitně, což má za následek solidní rámec pro zpětnou vazbu s možností konzistentně implementovat logiku opakování. The chyby balíček poskytuje další funkce pro zpracování chyb.
Balíček chyb
Balíček chyb je jedním z balíčků standardní knihovny Go. Balíček poskytuje jednoduchá primitiva a funkce pro zpracování chyb pro konzistentní vytváření a manipulaci s chybami v celém kódu Go.
Balíček poskytuje Nový funkce pro vytváření chyb pomocí vlastních chybových zpráv, které můžete použít stejným způsobem jako jakýkoli vestavěný typ chyby, jako je např
nula a Chyba metoda chyba rozhraní.The chyby package také poskytuje funkce pro zalamování a rozbalování chyb, což je metoda pro typová tvrzení o chybách.
Můžete importovat chyby balíček s klíčovým slovem import. Jednoduše zadejte název balíčku v seznamu importů.
import"chyby"
Chytání a zpracování chyb v Go
Znalost základního zpracování chyb v Go pokládá základ pro pochopení chyby balík. Funkce a metody vracejí chyby, které jsou doprovázeny zdrojem.
Zde je příklad zpracování chyb z operace otevření souboru s vestavěným os balík.
balík hlavní
import (
"fmt"
"os"
)funchlavní() {
soubor, chyba := os. OTEVŘENO("název souboru.txt")-li chyba!= nula {
fmt. Println (chyba)
}
// ...
}
The OTEVŘENO metoda os balíček je užitečný, když práci s textovými soubory v Go. Otevře soubor a vrátí instanci otevřeného souboru a soubor chyba.
Chybová hodnota může být nula typ, indikující žádné chyby. Můžete však zkontrolovat případ, kdy není nula, a zpracovat chybu, pokud je přítomna. Ve výše uvedeném případě blok if vypíše chybu.
Můžete přistupovat k Chyba metoda chyby k získání dalších informací o chybě (obvykle popis).
-li chyba!= nula {
fmt. Println (chyba. Chyba())
}
Pokud například soubor neexistuje, zobrazí se chybová zpráva, která vypadá asi takto:
Vytváření chyb v Go
Můžete vytvářet chyby pomocí Nový metoda chyby balík. Tato metoda přijímá řetězcovou zprávu a vrací zjištěné chyby.
import"chyby"
funchlavní() {
chyba := chyby. Nový("něco se pokazilo")
-li chyba!= nula {
// kód zpracování chyb je zde
}
}
The hlavní funkce vytvoří novou chybu a zpracuje případné chyby z vytvoření chyby pomocí an -li prohlášení.
V Go můžete také definovat vlastní chyby. Konvenční metoda používá strukturu a chybovou funkci k implementaci struktury na základě funkčnosti chyby.
balík hlavní
import"fmt"
typ customError strukturovat {
info tětiva
}funchlavní() {
// příklad konkretizace struktury
err := customError{
info: "Něco se pokazilo!",
}
// výstup instance struct
fmt. Println (chyba)
}
The customError struct je plán chyby a info pole řetězec bude obsahovat chybovou zprávu.
Vaše chybové funkce mohou implementovat customError struct a vrátí chybový řetězec.
func(ce customError)Chyba()tětiva {
vrátit se fmt. Sprintf("Došlo k vlastní chybě: %v", ce.info)
}
The Chyba metoda customError struct vrátí řetězec pomocí metodu formátování Sprintf balíčku fmt.
Chyby zabalování a rozbalování v Go
K chybám můžete přidat další kontextové informace jejich zabalením. Zabalené chyby budete primárně používat k vytvoření jasných chybových zpráv pro přesnost ladění.
Můžete použít Chyba metoda fmt balíček, který poskytuje funkce pro formátování chybových zpráv pro zalamování chyb. The Chyba metoda přijímá řetězec a sloveso formátování řetězce a chybu a vrací zabalenou chybu.
import (
"fmt"
"os"
)funchlavní() {
_, chyba := os. OTEVŘENO("název souboru.txt")
-li chyba!= nula {
zabalenéErr := fmt. Chyba("Chyba při otevírání souboru: %v", chyba)
fmt. Println (wrappedErr)
}
}
The hlavní funkce otevře soubor s os balíčky OTEVŘENO a zabalí chybu do metody Errorf z fmt balík. Poté odešle zabalenou chybu do konzoly.
Zabalené chyby ve svých programech můžete rozbalit pomocí Rozbalit metoda chyby balík. The Rozbalit metoda převezme zabalenou chybu a vrátí rozbalenou chybu.
import (
"fmt"
"os"
"chyby"
)funchlavní() {
_, chyba := os. OTEVŘENO("název souboru.txt")
-li chyba!= nula {
zabalenéErr := fmt. Chyba("Chyba při otevírání souboru: %v", chyba)
unwrappedErr := chyby. Rozbalit (wrappedErr)
fmt. Println (unwrappedErr)
}
}
The hlavní funkce zabalí chybu z operace otevření souboru a rozbalenoErr proměnná obsahuje rozbalenou chybu.
Zaznamenávejte své chybové zprávy pomocí těchto protokolovacích balíčků třetích stran
Budete muset zaznamenat některé chyby pro pozdější kontroly, ladění a další operace během procesu vývoje aplikace. Můžete použít zap balíček od Uber, Logrus, Zerolog a balíčky Log15 pro rychlé a strukturované protokolování.