Teiesugused lugejad aitavad MUO-d toetada. Kui teete ostu meie saidil olevate linkide abil, võime teenida sidusettevõtte komisjonitasu. Loe rohkem.

Vigade käsitlemine on tarkvara arendustsükli üks sagedasi toiminguid. See on hea programmeerimise oluline aspekt. Go kasutab lihtsat ja hõlpsasti kasutatavat lähenemist oma sisseehitatud vigade käsitlemise mehhanismiga. See põhineb funktsioonide ja meetodite vigade tagastamisel, mis võimaldab teil keskenduda intuitiivsele ja hõlpsasti loetavale koodifunktsioonile.

Käsitlete Go vigu selgesõnaliselt, mille tulemuseks on kindel tagasiside raamistik, mis võimaldab järjepidevalt rakendada uuesti proovimise loogikat. The vead pakett pakub lisafunktsioone vigade käsitlemiseks.

Vigade pakett

Vigade pakett on üks Go standardteegi pakettidest. Pakett pakub lihtsaid veakäsitluse primitiive ja funktsioone vigade loomiseks ja nendega järjepidevaks manipuleerimiseks Go koodis.

Pakett pakub Uus funktsioon vigade loomiseks kohandatud veateadetega, mida saate kasutada samamoodi nagu mis tahes sisseehitatud veatüüpi, näiteks null ja Viga meetod viga liides.

instagram viewer

The vead pakett pakub ka funktsiooni vigade mähkimiseks ja lahtipakkimiseks, meetodit vigade tüübi kinnitamiseks.

Saate importida vead pakett impordi märksõnaga. Lihtsalt määrake oma impordiloendis paketi nimi.

importida"vead"

Go vigade tuvastamine ja käsitlemine

Go põhiliste vigade käsitlemise tundmine loob aluse mõistmiseks vead pakett. Funktsioonid ja meetodid tagastavad vead, millega kaasneb ressurss.

Siin on näide sisseehitatud faili avamise toimingu vigade käsitlemisest os pakett.

pakett peamine

importida (
"fmt"
"os"
)

funcpeamine() {
fail, err := os. Open("failinimi.txt")

kui eks!= null {
fmt. Println (viga)
}

// ...
}

The Avatud meetod os pakett on kasulik, kui tekstifailidega töötamine Go-s. See avab faili, tagastades avatud faili eksemplari ja an viga.

Vea väärtus võib olla null tüüp, mis näitab, et vigu pole. Siiski saate kontrollida nulljuhtumit ja käsitleda viga, kui see on olemas. Ülaltoodud juhul prindib if-plokk vea.

Saate juurdepääsu Viga vea meetod, et saada vea kohta rohkem teavet (tavaliselt kirjeldus).

kui eks!= null {
fmt. Println (err. Viga())
}

Näiteks kui faili pole olemas, näete tõrketeadet, mis näeb välja umbes selline:

Vigade loomine Go-s

Saate luua vigu rakendusega Uus meetod vead pakett. See meetod võtab vastu stringiteate ja tagastab ilmnenud vead.

importida"vead"

funcpeamine() {
err := vead. Uus("midagi läks valesti")

kui eks!= null {
// veakäsitluse kood läheb siia
}
}

The peamine funktsioon loob uue tõrke ja käsitleb võimalikke vigu tõrke loomisest kui avaldus.

Go-s saate määrata ka kohandatud vigu. Tavaline meetod kasutab vea funktsionaalsusel põhineva struktuuri rakendamiseks struktuuri ja veafunktsiooni.

pakett peamine

importida"fmt"

tüüp customError struktuur {
info string
}

funcpeamine() {
// struktuuri näide
err := customError{
info: "Midagi läks valesti!",
}

// väljastab struktuuri eksemplari
fmt. Println (viga)
}

The customError struct on vea plaan ja info string väli sisaldab veateadet.

Teie veafunktsioonid võivad rakendada customError struct ja tagastab veastringi.

func(ce custom Error)Viga()string {
tagasi fmt. Sprintf("Tekkis kohandatud viga: %v", ce.info)
}

The Viga meetod customError struct tagastab stringi kasutades fmt-paketi Sprintf-vormingu meetod.

Go pakkimise ja lahtipakkimise vead

Saate lisada vigadele täiendavat kontekstipõhist teavet, kui need murtakse. Peamiselt kasutate mähitud vigu selgete veateadete loomiseks silumise täpsuse tagamiseks.

Võite kasutada Errorf meetod fmt pakett, mis pakub funktsiooni veateadete vormindamiseks vigade mähkimiseks. The Errorf meetod võtab stringi ja stringi vormindamise verbi ja vea ning tagastab mähitud vea.

importida (
"fmt"
"os"
)

funcpeamine() {
_, eksitus := os. Open("failinimi.txt")

kui eks!= null {
wrappedErr := fmt. Errorf("Viga faili avamisel: %v", eksitus)
fmt. Println (wrappedErr)
}
}

The peamine funktsioon avab faili os paketi omad Avatud meetodit ja murrab vea meetodi Errorf meetodiga fmt pakett. Seejärel väljastab see mähitud vea konsooli.

Saate oma programmide pakitud vead lahti pakkida rakendusega Lahti pakkida meetod vead pakett. The Lahti pakkida meetod võtab mähitud vea sisse ja tagastab pakkimata vea.

importida (
"fmt"
"os"
"vead"
)

funcpeamine() {
_, eksitus := os. Open("failinimi.txt")

kui eks!= null {
wrappedErr := fmt. Errorf("Viga faili avamisel: %v", eksitus)
unwrappedErr := vead. Lahtipakkimine (wrappedErr)
fmt. Println (unwrappedErr)
}
}

The peamine funktsioon murrab faili avamise toimingust tuleneva vea ja lahtipakkitudErr muutuja sisaldab lahtipakkimata viga.

Logige oma veaaruanded nende kolmanda osapoole logimispakettidega

Peate logima mõned vead hilisemate ülevaatuste, silumise ja muude rakenduste arendusprotsessi käigus tehtavate toimingute jaoks. Võite kasutada zap Uberi, Logruse, Zerologi ja Log15 pakettide pakett kiireks ja struktureeritud logimiseks.