Virheiden käsittely on yksi ohjelmistokehityssyklin yleisimmistä toiminnoista. Se on tärkeä osa hyvää ohjelmointia. Go ottaa yksinkertaisen ja helppokäyttöisen lähestymistavan sisäänrakennetulla virheenkäsittelymekanismillaan. Se perustuu funktioiden ja menetelmien virheiden palauttamiseen, joten voit keskittyä intuitiiviseen ja helposti luettavaan kooditoimintoon.
Käsittelet Go: n virheet eksplisiittisesti, mikä johtaa vankkaan palautteen kehykseen, jossa voit toteuttaa uudelleenyrityslogiikkaa johdonmukaisesti. The virheitä paketti tarjoaa lisätoimintoja virheiden käsittelyyn.
Virhepaketti
Virhepaketti on yksi Go: n vakiokirjaston paketeista. Paketti tarjoaa yksinkertaisia virheenkäsittelyn primitiivejä ja toimintoja virheiden luomiseksi ja käsittelemiseksi johdonmukaisesti Go-koodissa.
Paketti tarjoaa Uusi toiminto virheiden luomiseen mukautetuilla virheilmoituksilla, joita voit käyttää samalla tavalla kuin mitä tahansa sisäänrakennettua virhetyyppiä, kuten
nolla ja Virhe menetelmä virhe käyttöliittymä.The virheitä Paketti tarjoaa myös toiminnot virheiden rivittämistä ja purkamista varten, menetelmän virheiden tyyppiväitteisiin.
Voit tuoda virheitä paketti tuontiavainsanalla. Määritä vain paketin nimi tuontiluettelossasi.
tuonti"virheet"
Go-virheiden havaitseminen ja käsittely
Go-sovelluksen virheenkäsittelyn perustiedot luovat perustan sen ymmärtämiselle virheitä paketti. Funktiot ja menetelmät palauttavat virheet, joihin liittyy resurssi.
Tässä on esimerkki virheiden käsittelystä sisäänrakennetun tiedoston avaamistoiminnon avulla os paketti.
paketti pää
tuonti (
"fmt"
"os"
)funcpää() {
tiedosto, err := os. Avata("tiedostonimi.txt")jos virhe! = nolla {
fmt. Println (err)
}
// ...
}
The Avata menetelmä os paketti on hyödyllinen, kun työskennellä tekstitiedostojen kanssa Gossa. Se avaa tiedoston ja palauttaa avoimen tiedoston ilmentymän ja an virhe.
Virhearvo voi olla nolla tyyppiä, ei virheitä. Voit kuitenkin tarkistaa ei-nolla-tapauksen ja käsitellä virheen, jos se on olemassa. Yllä olevassa tapauksessa if-lohko tulostaa virheen.
Voit käyttää Virhe virhemenetelmä, jolla poimitaan lisätietoja virheestä (yleensä kuvaus).
jos virhe! = nolla {
fmt. Println (err. Virhe())
}
Jos tiedostoa ei esimerkiksi ole olemassa, näet virheilmoituksen, joka näyttää suunnilleen tältä:
Virheiden luominen Gossa
Voit luoda virheitä komennolla Uusi menetelmä virheitä paketti. Tämä menetelmä vastaanottaa merkkijonoviestin ja palauttaa havaitut virheet.
tuonti"virheet"
funcpää() {
err := virheitä. Uusi("jotain meni pieleen")
jos virhe! = nolla {
// virheenkäsittelykoodi menee tänne
}
}
The pää toiminto luo uuden virheen ja käsittelee mahdolliset virheet virheen luomisesta jos lausunto.
Voit myös määrittää mukautettuja virheitä Gossa. Perinteinen menetelmä käyttää rakennetta ja virhefunktiota rakenteen toteuttamiseksi virheen toiminnallisuuden perusteella.
paketti pää
tuonti"fmt"
tyyppi asiakasvirhe struct {
tiedot merkkijono
}funcpää() {
// esimerkki rakenteen ilmentymisestä
err := customError{
tiedot: "Jotain meni pieleen!",
}
// tulostaa rakenteen esiintymän
fmt. Println (err)
}
The asiakasvirhe struct on virheen suunnitelma ja tiedot merkkijonokenttä sisältää virheilmoituksen.
Virhetoimintosi voivat toteuttaa asiakasvirhe struct ja palauttaa virhemerkkijonon.
func(se asiakasvirhe)Virhe()merkkijono {
palata fmt. Sprintf("Tapahtui mukautettu virhe: %v", ce.info)
}
The Virhe menetelmä asiakasvirhe struct palauttaa merkkijonon käyttämällä fmt-paketin Sprintf-muotoilumenetelmä.
Käärimisen ja purkamisen virheet Gossa
Voit lisätä virheisiin lisää kontekstuaalista tietoa rivittämällä ne. Käytät ensisijaisesti rivitettyjä virheitä luomaan selkeitä virheilmoituksia virheenkorjauksen tarkkuuden vuoksi.
Voit käyttää Errorf menetelmä fmt paketti, joka tarjoaa toiminnot virhesanomien muotoiluun virheiden rivittämiseksi. The Errorf menetelmä ottaa merkkijonon ja merkkijonomuotoiluverbin ja virheen ja palauttaa rivitetyn virheen.
tuonti (
"fmt"
"os"
)funcpää() {
_, err := os. Avata("tiedostonimi.txt")
jos virhe! = nolla {
wrappedErr := fmt. Errorf("Virhe avattaessa tiedostoa: %v", virhe)
fmt. Println (wrappedErr)
}
}
The pää -toiminto avaa tiedoston, jossa on os paketin Avata -menetelmää ja kääriä virheen Errorf-menetelmään fmt paketti. Sitten se tulostaa rivitysvirheen konsoliin.
Voit purkaa ohjelmiesi paketoidut virheet -sovelluksella Avaa pakkaus menetelmä virheitä paketti. The Avaa pakkaus Metodi ottaa käyttöön rivittyneen virheen ja palauttaa paketoimattoman virheen.
tuonti (
"fmt"
"os"
"virheet"
)funcpää() {
_, err := os. Avata("tiedostonimi.txt")
jos virhe! = nolla {
wrappedErr := fmt. Errorf("Virhe avattaessa tiedostoa: %v", virhe)
unwrappedErr := virheitä. Pura (wrappedErr)
fmt. Println (unwrappedErr)
}
}
The pää toiminto käärii tiedoston avaustoiminnon virheen, ja unwrappedErr muuttuja pitää sisällään purkamattoman virheen.
Kirjaa virheraportit näillä kolmannen osapuolen lokipaketeilla
Sinun on kirjattava joitakin virheitä myöhempää tarkistusta, virheenkorjausta ja muita sovelluksen kehitysprosessin aikana suoritettavia toimintoja varten. Voit käyttää zap Uber-, Logrus-, Zerolog- ja Log15-paketti nopeaan, jäsenneltyyn kirjaamiseen.