A hibakezelés a szoftverfejlesztési ciklus egyik gyakori művelete. Ez a jó programozás döntő szempontja. A Go egyszerű és könnyen használható megközelítést alkalmaz beépített hibakezelési mechanizmusával. A függvényekből és metódusokból származó hibák visszaadásán alapul, lehetővé téve, hogy az intuitív és könnyen olvasható kódfunkciókra összpontosítson.
Kifejezetten kezeli a Go hibáit, ami szilárd keretrendszert eredményez a visszacsatoláshoz, amely lehetővé teszi az újrapróbálkozási logika következetes megvalósítását. A hibákat csomag további funkciókat biztosít a hibakezeléshez.
A hibák csomagja
A hibacsomag a Go szabványos könyvtárának egyik csomagja. A csomag egyszerű hibakezelési primitíveket és funkciókat kínál a hibák következetes létrehozásához és kezeléséhez a Go kódban.
A csomag biztosítja a Új funkció hibák létrehozására egyéni hibaüzenetekkel, amelyeket ugyanúgy használhat, mint bármely beépített hibatípust, mint pl.
nulla és Hiba módszere a hiba felület.A hibákat A csomag funkcionalitást is biztosít a hibák tördeléséhez és kibontásához, ez a módszer a hibákra vonatkozó típusérvényesítéshez.
Importálhatja a hibákat csomag az import kulcsszóval. Egyszerűen adja meg a csomag nevét az importált listában.
import"hibák"
A Go hibáinak észlelése és kezelése
A Go alapvető hibakezelésének ismerete megalapozza a hibákat csomag. A függvények és metódusok olyan hibákat adnak vissza, amelyeket egy erőforrás kísér.
Íme egy példa a beépített fájlmegnyitási művelet hibakezelésére os csomag.
csomag fő-
import (
"fmt"
"os"
)funcfő-() {
fájl, err := os. Nyisd ki("fájlnév.txt")ha hiba! = nulla {
fmt. Println (hiba)
}
// ...
}
A Nyisd ki módszere a os csomag akkor hasznos, ha szöveges fájlokkal dolgozik a Go alkalmazásban. Megnyit egy fájlt, egy nyitott fájlpéldányt és egy hiba.
A hibaérték lehet a nulla típus, nem jelez hibát. Ellenőrizheti azonban a nem nulla esetet, és kezelheti a hibát, ha az jelen van. A fenti esetben az if blokk kiírja a hibát.
Hozzáférhet a Hiba a hiba módszere a hibával kapcsolatos további információk kinyerésére (általában leírás).
ha hiba! = nulla {
fmt. Println (hiba. Hiba())
}
Ha például a fájl nem létezik, akkor egy hibaüzenet jelenik meg, amely valahogy így néz ki:
Hibák létrehozása a Go-ban
Hibákat hozhat létre a Új módszere a hibákat csomag. Ez a metódus egy karakterlánc-üzenetet fogad, és a talált hibákat adja vissza.
import"hibák"
funcfő-() {
err := hibák. Új("valami elromlott")
ha hiba! = nulla {
// a hibakezelő kód ide kerül
}
}
A fő- függvény új hibát hoz létre, és kezeli a hiba létrehozásából származó lehetséges hibákat egy ha nyilatkozat.
A Go alkalmazásban egyéni hibákat is megadhat. A hagyományos módszer egy struct és egy hibafüggvényt használ a struktúra megvalósításához a hiba funkcionalitása alapján.
csomag fő-
import"fmt"
típus ügyfélhiba struct {
info húr
}funcfő-() {
// példa a struktúra példányosítása
err := customError{
info: "Valami elromlott!",
}
// kiadja a struktúra példányát
fmt. Println (hiba)
}
A ügyfélhiba A struct a hiba tervrajza, és a info karakterlánc mező tartalmazza a hibaüzenetet.
A hibafunkciói megvalósíthatják a ügyfélhiba struct és adjon vissza egy hiba karakterláncot.
func(ce custom Error)Hiba()húr {
Visszatérés fmt. Sprintf("Egyéni hiba történt: %v", ce.info)
}
A Hiba módszere a ügyfélhiba A struct egy karakterláncot ad vissza az fmt csomag Sprintf formázási módszere.
Becsomagolási és kicsomagolási hibák a Go-ban
A hibákhoz további környezeti információkat is hozzáadhat, ha tördeli őket. Elsősorban a tördelt hibákat fogja használni, hogy egyértelmű hibaüzeneteket hozzon létre a hibakeresés pontossága érdekében.
Használhatja a Errorf módszere a fmt csomag, amely funkciót biztosít a hibaüzenetek formázásához a hibák tördeléséhez. A Errorf metódus bevesz egy karakterláncot és egy karakterlánc formázási igét és a hibát, és visszaadja a tördelt hibát.
import (
"fmt"
"os"
)funcfő-() {
_, err := os. Nyisd ki("fájlnév.txt")
ha hiba! = nulla {
wrappedErr := fmt. Errorf("Hiba a fájl megnyitásakor: %v", hiba)
fmt. Println (wrappedErr)
}
}
A fő- függvény megnyit egy fájlt a os csomagok Nyisd ki metódussal, és a hibát az Errorf metódusával csomagolja fmt csomag. Ezután kiadja a becsomagolt hibát a konzolnak.
A programjaiban lévő becsomagolt hibákat a Kibont módszere a hibákat csomag. A Kibont metódus beveszi a tördelt hibát, és visszaadja a kicsomagolt hibát.
import (
"fmt"
"os"
"hibák"
)funcfő-() {
_, err := os. Nyisd ki("fájlnév.txt")
ha hiba! = nulla {
wrappedErr := fmt. Errorf("Hiba a fájl megnyitásakor: %v", hiba)
unwrappedErr := hibák. Kicsomagolás (wrappedErr)
fmt. Println (unwrappedErr)
}
}
A fő- függvény tördeli a fájl megnyitási műveletéből származó hibát, és a unwrappedErr változó tartalmazza a kicsomagolt hibát.
Naplózza a hibajelentéseket ezekkel a harmadik féltől származó naplózási csomagokkal
Néhány hibát naplóznia kell a későbbi felülvizsgálatokhoz, hibakereséshez és egyéb műveletekhez az alkalmazásfejlesztési folyamat során. Használhatja a támad Uber, Logrus, Zerolog és Log15 csomag a gyors, strukturált naplózás érdekében.