Fejlhåndtering er en af de hyppige operationer i softwareudviklingscyklussen. Det er et afgørende aspekt af god programmering. Go har en enkel og brugervenlig tilgang med sin indbyggede mekanisme til fejlhåndtering. Det er baseret på returnering af fejl fra funktioner og metoder, så du kan fokusere på kodefunktionalitet, der er intuitiv og let at læse.
Du håndterer fejl i Go eksplicit, hvilket resulterer i en solid ramme for feedback, med mulighed for at implementere genforsøgslogik konsekvent. Det fejl pakken giver yderligere funktionalitet til fejlhåndtering.
Fejlpakken
Fejlpakken er en af pakkerne i Go's standardbibliotek. Pakken giver enkle fejlhåndteringsprimitiver og funktionaliteter til at skabe og manipulere fejl konsekvent på tværs af Go-kode.
Pakken giver Ny funktion til at oprette fejl med brugerdefinerede fejlmeddelelser, som du kan bruge på samme måde som enhver indbygget fejltype, som f.eks.
nul og Fejl metoden til fejl interface.Det fejl pakken giver også funktionalitet til indpakning og udpakning af fejl, en metode til typepåstande om fejl.
Du kan importere fejl pakke med importsøgeordet. Du skal blot angive navnet på pakken på din liste over import.
importere"fejl"
Fangst og håndtering af fejl i farten
Viden om grundlæggende fejlhåndtering i Go lægger grundlaget for at forstå fejl pakke. Funktioner og metoder returnerer fejl, der er ledsaget af en ressource.
Her er et eksempel på fejlhåndtering fra en filåbningsoperation med det indbyggede os pakke.
pakke vigtigste
importere (
"fmt"
"os"
)funcvigtigste() {
fil, fejl := os. Åben("filnavn.txt")hvis fejl!= nul {
fmt. Println (fejl)
}
// ...
}
Det Åben metoden til os pakken er nyttig når arbejder med tekstfiler i Go. Det åbner en fil, returnerer en åben filforekomst og en fejl.
Fejlværdien kan være nul type, der angiver ingen fejl. Du kan dog kontrollere, om en sag ikke er nul og håndtere en fejl, hvis den er til stede. I ovenstående tilfælde udskriver if-blokken fejlen.
Du kan få adgang til Fejl metode til en fejl for at udtrække flere oplysninger om fejlen (normalt en beskrivelse).
hvis fejl!= nul {
fmt. Println (fejl. Fejl())
}
For eksempel, hvis filen ikke eksisterer, vil du se en fejlmeddelelse, der ser sådan ud:
Oprettelse af fejl i Go
Du kan lave fejl med Ny metoden til fejl pakke. Denne metode tager en strengmeddelelse og returnerer stødte fejl.
importere"fejl"
funcvigtigste() {
fejl := fejl. Ny("noget gik galt")
hvis fejl!= nul {
// fejlhåndteringskode går her
}
}
Det vigtigste funktion opretter en ny fejl og håndterer mulige fejl fra fejloprettelsen med en hvis udmelding.
Du kan også definere brugerdefinerede fejl i Go. Den konventionelle metode bruger en struct- og en fejlfunktion til at implementere strukturen baseret på fejlens funktionalitet.
pakke vigtigste
importere"fmt"
type customError struktur {
info snor
}funcvigtigste() {
// eksempel på instansiering af strukturen
fejl := customError{
info: "Noget gik galt!",
}
// output instansen af strukturen
fmt. Println (fejl)
}
Det customError struct er planen for fejlen, og info string felt vil indeholde fejlmeddelelsen.
Dine fejlfunktioner kan implementere customError struct og returner en fejlstreng.
func(ce customError)Fejl()snor {
Vend tilbage fmt. Sprintf("Der opstod en brugerdefineret fejl: %v", ce.info)
}
Det Fejl metoden til customError struct returnerer en streng vha Sprintf-formateringsmetoden for fmt-pakken.
Indpaknings- og udpakningsfejl i Go
Du kan tilføje yderligere kontekstuelle oplysninger til fejl ved at pakke dem ind. Du vil primært bruge indpakkede fejl til at skabe klare fejlmeddelelser for præcision i debugging.
Du kan bruge Fejl metoden til fmt pakke, der giver funktionalitet til formatering af fejlmeddelelser for at ombryde fejl. Det Fejl metoden tager et streng- og strengformateringsverb og fejlen ind og returnerer den ombrudte fejl.
importere (
"fmt"
"os"
)funcvigtigste() {
_, fejl := os. Åben("filnavn.txt")
hvis fejl!= nul {
wrappedErr := fmt. Fejl("Fejl ved åbning af fil: %v", fejl)
fmt. Println (wrappedErr)
}
}
Det vigtigste funktionen åbner en fil med os pakkens Åben metoden og ombryder fejlen med Errorf-metoden for fmt pakke. Den udsender derefter den indpakkede fejl til konsollen.
Du kan pakke indpakkede fejl i dine programmer med Pak ud metoden til fejl pakke. Det Pak ud metoden tager den indpakkede fejl ind og returnerer den uindpakkede fejl.
importere (
"fmt"
"os"
"fejl"
)funcvigtigste() {
_, fejl := os. Åben("filnavn.txt")
hvis fejl!= nul {
wrappedErr := fmt. Fejl("Fejl ved åbning af fil: %v", fejl)
unwrappedErr := fejl. Pak ud (wrappedErr)
fmt. Println (unwrappedErr)
}
}
Det vigtigste funktion ombryder en fejl fra en filåbningshandling, og unwrappedErr variabel holder den uindpakkede fejl.
Log dine fejlrapporter med disse tredjepartslogningspakker
Du skal logge nogle fejl til senere gennemgange, fejlretning og andre handlinger under din applikationsudviklingsproces. Du kan bruge zap pakke af Uber-, Logrus-, Zerolog- og Log15-pakker til hurtig, struktureret logning.