Odpravljanje napak je ena izmed pogostih operacij v ciklu razvoja programske opreme. To je ključni vidik dobrega programiranja. Go ima preprost in za uporabo enostaven pristop z vgrajenim mehanizmom za obravnavanje napak. Temelji na vračanju napak iz funkcij in metod, kar vam omogoča, da se osredotočite na funkcionalnost kode, ki je intuitivna in lahko berljiva.
Napake v Go obravnavate eksplicitno, kar ima za posledico trden okvir za povratne informacije z možnostjo dosledne implementacije logike ponovnega poskusa. The napake paket zagotavlja dodatno funkcionalnost za obravnavo napak.
Paket napak
Paket napak je eden od paketov v standardni knjižnici Go. Paket zagotavlja preproste primitive za obravnavanje napak in funkcionalnosti za dosledno ustvarjanje in manipuliranje z napakami v kodi Go.
Paket zagotavlja Novo funkcijo za ustvarjanje napak s sporočili o napakah po meri, ki jih lahko uporabite na enak način kot katero koli vgrajeno vrsto napake, kot je
nič in Napaka metoda napaka vmesnik.The napake paket ponuja tudi funkcionalnost za ovijanje in odvijanje napak, metodo za trditve o tipih napak.
Lahko uvozite napake paket s ključno besedo import. Preprosto določite ime paketa na seznamu uvozov.
uvoz"napake"
Lovljenje in obravnavanje napak v Go
Poznavanje osnovnega obravnavanja napak v Go je osnova za razumevanje napake paket. Funkcije in metode vračajo napake, ki jih spremlja vir.
Tukaj je primer obravnavanja napak pri operaciji odpiranja datoteke z vgrajenim os paket.
paket glavni
uvoz (
"fmt"
"os"
)funkglavni() {
datoteka, napaka := os. Odprto("imedatoteke.txt")če napaka!= nič {
fmt. Println (napaka)
}
// ...
}
The Odprto metoda os paket je uporaben, ko delo z besedilnimi datotekami v Go. Odpre datoteko, vrne primerek odprte datoteke in napaka.
Vrednost napake je lahko nič tip, kar ne kaže na napake. Vendar pa lahko preverite, ali ni nič, in obravnavate napako, če je prisotna. V zgornjem primeru blok if natisne napako.
Dostopate lahko do Napaka metoda napake za pridobivanje več informacij o napaki (običajno opis).
če napaka!= nič {
fmt. Println (napaka Napaka())
}
Na primer, če datoteka ne obstaja, boste videli sporočilo o napaki, ki je videti nekako takole:
Ustvarjanje napak v Go
Napake lahko ustvarite z Novo metoda napake paket. Ta metoda sprejme sporočilo niza in vrne odkrite napake.
uvoz"napake"
funkglavni() {
err := napake. novo("nekaj je šlo narobe")
če napaka!= nič {
// koda za obravnavanje napak je tukaj
}
}
The glavni ustvari novo napako in obravnava morebitne napake iz ustvarjanja napake z če izjava.
V Go lahko definirate tudi napake po meri. Običajna metoda uporablja strukturo in funkcijo napake za implementacijo strukture na podlagi funkcionalnosti napake.
paket glavni
uvoz"fmt"
vrsta customError struct {
info vrvica
}funkglavni() {
// primer instanciranja strukture
napaka := customError{
informacije: "Nekaj je šlo narobe!",
}
// izpiše primerek strukture
fmt. Println (napaka)
}
The customError struct je načrt za napako in info polje niz bo vsebovalo sporočilo o napaki.
Vaše funkcije za napake lahko izvajajo customError struct in vrne niz napake.
funk(ce customError)Napaka()vrvica {
vrnitev fmt. Sprintf("Prišlo je do napake po meri: %v", ce.info)
}
The Napaka metoda customError struct vrne niz z uporabo metoda oblikovanja Sprintf paketa fmt.
Napake pri ovijanju in odvijanju v Go
Napakam lahko dodate nadaljnje kontekstualne informacije, tako da jih zavijete. Zavite napake boste uporabljali predvsem za ustvarjanje jasnih sporočil o napakah za natančnost pri odpravljanju napak.
Lahko uporabite Errorf metoda fmt paket, ki nudi funkcionalnost za oblikovanje sporočil o napakah za zavijanje napak. The Errorf metoda sprejme niz in glagol za oblikovanje niza ter napako ter vrne ovito napako.
uvoz (
"fmt"
"os"
)funkglavni() {
_, napaka := os. Odprto("imedatoteke.txt")
če napaka!= nič {
wrappedErr := fmt. Errorf("Napaka pri odpiranju datoteke: %v", napaka)
fmt. Println (wrappedErr)
}
}
The glavni funkcija odpre datoteko z os paketi Odprto in napako ovije z metodo Errorf fmt paket. Nato izpiše ovito napako v konzolo.
Zavite napake v svojih programih lahko odvijete z Odvij metoda napake paket. The Odvij metoda sprejme zavito napako in vrne nezavito napako.
uvoz (
"fmt"
"os"
"napake"
)funkglavni() {
_, napaka := os. Odprto("imedatoteke.txt")
če napaka!= nič {
wrappedErr := fmt. Errorf("Napaka pri odpiranju datoteke: %v", napaka)
unwrappedErr := napake. Odvij (wrappedErr)
fmt. Println (unwrappedErr)
}
}
The glavni funkcija zavije napako pri operaciji odpiranja datoteke in unwrappedErr spremenljivka vsebuje odvito napako.
Beležite svoja poročila o napakah s temi paketi za beleženje tretjih oseb
Za poznejše preglede, odpravljanje napak in druge operacije med postopkom razvoja aplikacije boste morali zabeležiti nekaj napak. Lahko uporabite zap paket Uber, Logrus, Zerolog in paketi Log15 za hitro, strukturirano beleženje.