Foutafhandeling is een van de meest voorkomende bewerkingen in de softwareontwikkelingscyclus. Het is een cruciaal aspect van goed programmeren. Go hanteert een eenvoudige en gebruiksvriendelijke aanpak met het ingebouwde mechanisme voor foutafhandeling. Het is gebaseerd op het retourneren van fouten van functies en methoden, zodat u zich kunt concentreren op codefunctionaliteit die intuïtief en gemakkelijk te lezen is.
Je handelt fouten in Go expliciet af, wat resulteert in een solide raamwerk voor feedback, met de mogelijkheid om logica voor opnieuw proberen consistent te implementeren. De fouten pakket biedt extra functionaliteit voor foutafhandeling.
Het foutenpakket
Het foutenpakket is een van de pakketten in de standaardbibliotheek van Go. Het pakket biedt eenvoudige foutafhandelingsprimitieven en functionaliteiten voor het consistent maken en manipuleren van fouten in Go-code.
Het pakket biedt de Nieuw functie voor het maken van fouten met aangepaste foutmeldingen die u op dezelfde manier kunt gebruiken als elk ingebouwd fouttype, zoals de nihil En Fout methode van de fout koppel.
De fouten package biedt ook functionaliteit voor het in- en uitpakken van fouten, een methode voor typebevestigingen op fouten.
U kunt de fouten pakket met het importsleutelwoord. Geef gewoon de naam van het pakket op in uw lijst met importproducten.
importeren"fouten"
Fouten in Go opvangen en afhandelen
Kennis van elementaire foutafhandeling in Go legt de basis voor het begrijpen van de fouten pakket. Functies en methoden retourneren fouten die vergezeld gaan van een resource.
Hier is een voorbeeld van foutafhandeling bij het openen van een bestand met de ingebouwde os pakket.
pakket voornaamst
importeren (
"fmt"
"os"
)funcvoornaamst() {
bestand, fout := os. Open("bestandsnaam.txt")als fout!= nihil {
fmt. Println (fout)
}
// ...
}
De Open methode van de os pakket is handig wanneer werken met tekstbestanden in Go. Het opent een bestand, retourneert een geopende bestandsinstantie en een fout.
De foutwaarde kan de nihil type, wat aangeeft dat er geen fouten zijn. U kunt echter controleren op een niet-nul geval en een fout afhandelen als deze aanwezig is. In het bovenstaande geval drukt het if-blok de fout af.
U kunt toegang krijgen tot de Fout methode van een fout om meer informatie over de fout te extraheren (meestal een beschrijving).
als fout!= nihil {
fmt. Println (fout. Fout())
}
Als het bestand bijvoorbeeld niet bestaat, ziet u een foutbericht dat er ongeveer zo uitziet:
Fouten maken in Go
U kunt fouten maken met de Nieuw methode van de fouten pakket. Deze methode neemt een tekenreeksbericht op en retourneert aangetroffen fouten.
importeren"fouten"
funcvoornaamst() {
fout := fouten. Nieuw("er is iets fout gegaan")
als fout!= nihil {
// code voor foutafhandeling komt hier
}
}
De voornaamst functie maakt een nieuwe fout aan en behandelt mogelijke fouten van het maken van de fout met een als stelling.
U kunt ook aangepaste fouten definiëren in Go. De conventionele methode gebruikt een struct- en een foutfunctie om de struct te implementeren op basis van de functionaliteit van de fout.
pakket voornaamst
importeren"fmt"
type customError structuur {
informatie snaar
}funcvoornaamst() {
// voorbeeld instantiëring van de struct
fout := customError{
informatie: "Er is iets fout gegaan!",
}
// voer de instantie van de struct uit
fmt. Println (fout)
}
De customError struct is de blauwdruk voor de fout, en de informatie stringveld bevat de foutmelding.
Uw foutfuncties kunnen de customError struct en retourneert een foutreeks.
func(ce customError)Fout()snaar {
opbrengst fmt. Sprintf("Er is een aangepaste fout opgetreden: %v", ce.info)
}
De Fout methode van de customError struct retourneert een string met behulp van de Sprintf-opmaakmethode van het fmt-pakket.
Fouten bij in- en uitpakken in Go
U kunt verdere contextuele informatie aan fouten toevoegen door ze in te pakken. U gebruikt in de eerste plaats ingepakte fouten om duidelijke foutmeldingen te maken voor precisie bij het debuggen.
U kunt de Foutf methode van de fmt pakket dat functionaliteit biedt voor het formatteren van foutberichten om fouten in te pakken. De Foutf methode neemt een string en string formatting werkwoord en de fout op en retourneert de ingepakte fout.
importeren (
"fmt"
"os"
)funcvoornaamst() {
_, fout := os. Open("bestandsnaam.txt")
als fout!= nihil {
ingepaktErr := fmt. Foutf("Fout bij openen van bestand: %v", fout)
fmt. Println (verpaktErr)
}
}
De voornaamst functie opent een bestand met de os pakketjes Open methode en verpakt de fout met de Errorf methode van de fmt pakket. Vervolgens wordt de ingepakte fout naar de console uitgevoerd.
U kunt verpakte fouten in uw programma's uitpakken met de Uitpakken methode van de fouten pakket. De Uitpakken methode neemt de ingepakte fout op en retourneert de onverpakte fout.
importeren (
"fmt"
"os"
"fouten"
)funcvoornaamst() {
_, fout := os. Open("bestandsnaam.txt")
als fout!= nihil {
ingepaktErr := fmt. Foutf("Fout bij openen van bestand: %v", fout)
unwrappedErr := fouten. Uitpakken (verpaktErr)
fmt. Println (onverpaktErr)
}
}
De voornaamst functie verpakt een fout van het openen van een bestand, en de uitgepaktErr variabele bevat de uitgepakte fout.
Registreer uw foutrapporten met deze logbestanden van derden
U moet een aantal fouten vastleggen voor latere beoordelingen, foutopsporing en andere bewerkingen tijdens het ontwikkelproces van uw toepassing. U kunt de zap pakket van Uber, Logrus, Zerolog en Log15-pakketten voor snelle, gestructureerde logboekregistratie.