Feilhåndtering er en av de hyppige operasjonene i programvareutviklingssyklusen. Det er et avgjørende aspekt ved god programmering. Go har en enkel og brukervennlig tilnærming med sin innebygde mekanisme for feilhåndtering. Den er basert på retur av feil fra funksjoner og metoder, slik at du kan fokusere på kodefunksjonalitet som er intuitiv og lett å lese.
Du håndterer feil i Go eksplisitt, noe som resulterer i et solid rammeverk for tilbakemeldinger, med muligheten til å implementere gjenforsøkslogikk konsekvent. De feil pakken gir tilleggsfunksjonalitet for feilhåndtering.
Feilpakken
Feilpakken er en av pakkene i Gos standardbibliotek. Pakken gir enkle feilhåndteringsprimitiver og funksjoner for å lage og manipulere feil konsekvent på tvers av Go-kode.
Pakken gir Ny funksjon for å lage feil med egendefinerte feilmeldinger som du kan bruke på samme måte som alle innebygde feiltyper, for eksempel null og Feil metoden for feil grensesnitt.
De feil pakken gir også funksjonalitet for innpakning og utpakking av feil, en metode for typepåstander om feil.
Du kan importere feil pakke med importnøkkelordet. Bare spesifiser navnet på pakken i listen over importer.
import"feil"
Fange og håndtere feil i farten
Kunnskap om grunnleggende feilhåndtering i Go legger grunnlaget for å forstå feil pakke. Funksjoner og metoder returnerer feil som er ledsaget av en ressurs.
Her er et eksempel på feilhåndtering fra en filåpningsoperasjon med det innebygde os pakke.
pakke hoved-
import (
"fmt"
"os"
)funchoved-() {
fil, feil := os. Åpen("filnavn.txt")hvis feil!= null {
fmt. Println (feil)
}
// ...
}
De Åpen metoden for os pakken er nyttig når arbeider med tekstfiler i Go. Den åpner en fil, returnerer en åpen filforekomst og en feil.
Feilverdien kan være null type, som indikerer ingen feil. Du kan imidlertid se etter et tilfelle uten null og håndtere en feil hvis den er til stede. I tilfellet ovenfor skriver if-blokken ut feilen.
Du kan få tilgang til Feil metode for en feil for å trekke ut mer informasjon om feilen (vanligvis en beskrivelse).
hvis feil!= null {
fmt. Println (feil. Feil())
}
For eksempel, hvis filen ikke eksisterer, vil du se en feilmelding som ser omtrent slik ut:
Opprette feil i Go
Du kan lage feil med Ny metoden for feil pakke. Denne metoden tar inn en strengmelding og returnerer oppståtte feil.
import"feil"
funchoved-() {
feil := feil. Ny("noe gikk galt")
hvis feil!= null {
// feilhåndteringskoden går her
}
}
De hoved- funksjonen oppretter en ny feil og håndterer mulige feil fra feilopprettingen med en hvis uttalelse.
Du kan også definere egendefinerte feil i Go. Den konvensjonelle metoden bruker en struktur og en feilfunksjon for å implementere strukturen basert på feilens funksjonalitet.
pakke hoved-
import"fmt"
type customError struktur {
info streng
}funchoved-() {
// eksempel instansiering av strukturen
feil := tilpassetFeil{
info: "Noe gikk galt!",
}
// skriv ut forekomsten av strukturen
fmt. Println (feil)
}
De customError struct er planen for feilen, og info strengfeltet vil inneholde feilmeldingen.
Feilfunksjonene dine kan implementere customError struct og returner en feilstreng.
func(ce customError)Feil()streng {
komme tilbake fmt. Sprintf("En egendefinert feil oppstod: %v", ce.info)
}
De Feil metoden for customError struct returnerer en streng ved hjelp av Sprintf-formateringsmetoden til fmt-pakken.
Innpaknings- og utpakkingsfeil i Go
Du kan legge til ytterligere kontekstuell informasjon til feil ved å pakke dem inn. Du vil primært bruke innpakket feil for å lage klare feilmeldinger for presisjon ved feilsøking.
Du kan bruke Feilf metoden for fmt pakke som gir funksjonalitet for formatering av feilmeldinger for å bryte feil. De Feilf metoden tar inn et streng- og strengformateringsverb og feilen og returnerer den pakket feil.
import (
"fmt"
"os"
)funchoved-() {
_, feil := os. Åpen("filnavn.txt")
hvis feil!= null {
wrappedErr := fmt. Feil("Feil ved åpning av fil: %v", feil)
fmt. Println (wrappedErr)
}
}
De hoved- funksjonen åpner en fil med os pakkens Åpen metoden og bryter feilen med Errorf-metoden til fmt pakke. Den sender deretter ut den pakket feilen til konsollen.
Du kan pakke ut innpakket feil i programmene dine med Pakk ut metoden for feil pakke. De Pakk ut metoden tar inn den pakkede feilen og returnerer den pakkede feilen.
import (
"fmt"
"os"
"feil"
)funchoved-() {
_, feil := os. Åpen("filnavn.txt")
hvis feil!= null {
wrappedErr := fmt. Feil("Feil ved åpning av fil: %v", feil)
unwrappedErr := feil. Unwrap (wrappedErr)
fmt. Println (unwrappedErr)
}
}
De hoved- funksjonen bryter en feil fra en filåpningsoperasjon, og unwrappedErr variabelen inneholder den uemballerte feilen.
Logg feilrapportene dine med disse tredjepartsloggingspakkene
Du må logge noen feil for senere gjennomganger, feilsøking og andre operasjoner under applikasjonsutviklingsprosessen. Du kan bruke zap pakke av Uber-, Logrus-, Zerolog- og Log15-pakker for rask, strukturert logging.