Kuidas käsitleda vigu Golangis?

Kuidas Kasitleda Vigu Golangis



Go on populaarne programmeerimiskeel, mis on oma tõhususe, kiiruse ja tõhususe tõttu populaarsust kogunud. Vigu võib aga ette tulla arendus- ja teostusfaasis, nagu iga teise programmeerimiskeele puhul. Vigade tõhus käsitlemine on teie Go-programmide töökindluse ja stabiilsuse tagamiseks hädavajalik.

Selles artiklis uuritakse mitut meetodit ja soovitatavat protseduuri Go vigade haldamiseks.







Käsitsege vigu Golangis

Go-s saate seda teha käsitseda vigu alltoodud meetodite abil:



1: Uus() funktsioon

Go keel pakub Uus() funktsioon vigade haldamiseks. See funktsioon, mis on saadaval sisseehitatud veapaketis, võimaldab arendajatel luua oma programmidele kohandatud veateateid. Kasutades Uus() funktsiooni abil saavad arendajad vigu tõhusalt käsitleda ja kasutajatele sisukaid veateateid edastada.



pakett peamine

importida 'vead'
importida 'fmt'

funktsiooni kontroll ( nime string ) viga {
nError := vead.Uus ( 'Vigane nimi' )
kui nimi ! = 'Linux' {
tagasi nError
}
tagasi null
}
func main ( ) {
nimi := 'Linux'
err := kontrolli ( nimi )
kui eks ! = null {
fmt.Println ( eks )
} muidu {
fmt.Println ( 'Kehtiv nimi' )
}
}





Ülaltoodud kood kasutab Uus() checkName funktsiooni, et näha, kas string Linux vastab antud nimele. Funktsioon tekitab teatega vea Kehtetu nimi kui nime pole Linux . Funktsioon tagastab nulli, mis näitab, et viga ei olnud, kui nimi on võrdne Linux .

Nimemuutuja on määratud väärtusele Linux põhifunktsiooni kõnes checkName funktsioon, mis võtab argumendina ka nimemuutuja. Põhifunktsioon prindib veateate, kui checkName funktsioon tagastab vea. Põhifunktsioon prindib Kehtiv nimi kui checkName funktsioon tagastab nulli.



Väljund

2: Errorf() funktsioon

The Errorf() Go funktsioon võimaldab meil käsitleda ka vigu. Errorf() annab meile võimaluse vormindada veateade. Fmt-paketi importimisel saavad arendajad seda kasutada veateadete kohandamiseks vastavalt oma vajadustele. Errorf() ühtlustab ja parandab Go vigade haldamise ja edastamise tõhusust.

pakett peamine
importida 'fmt'

func div ( n1, n2 sina ) viga {

kui n2 == 0 {
tagasi fmt.Errorf ( '%d / %d \n Arvu ei saa nulliga jagada' , n1, n2 )
}
tagasi null
}
func main ( ) {
viga := div ( 42 , 0 )
kui eks ! = null {
fmt.Printf ( 'viga: %s' , eks )
} muidu {
fmt.Println ( 'Kehtiv osakond' )
}
}

Ülaltoodud koodis on div funktsioon aktsepteerib kahte täisarvu sisendit n1 ja n2 ning kui n2 on null, tekitab see vea. Funktsioon tekitab veateate sõnumiga, mis sisaldab väärtusi n1 ja n2, kui n2 on null. Funktsioon tagastab nulli, näitamaks, et viga ei olnud, kui n2 ei ole null.

Viga, mille div tagastab, salvestatakse err-muutujas, kui põhifunktsiooni käitatakse div väärtustega 42 ja 0. Põhifunktsioon kasutab fmt.Printf-i, et kuvada veateade, kui funktsioon div tagastab vea. Põhifunktsioon prindib Kehtiv jaotus kui funktsioon div tagastab nulli.

Väljund

3: selgesõnaline vigade käsitlemine

Võrreldes teiste programmeerimiskeeltega, mis tuginevad sageli eranditele, julgustab Go selgesõnalist veahaldust. See lähenemisviis julgustab arendajaid kasutama if-lauseid vigade selgesõnaliseks kontrollimiseks, selle asemel, et toetuda try-catch-plokkidele. Seda tehes leitakse tõenäolisemalt vead ja need kõrvaldatakse. Selle hõlbustamiseks pakub Go kui eksite! = null avaldus, mis võimaldab arendajatel pärast funktsiooni täitmist vigu kontrollida ja tulemuse põhjal asjakohaseid toiminguid teha. Selgesõnalise veakäsitlusega pakub Go struktureeritumat ja usaldusväärsemat lähenemist veahaldusele.

pakett peamine
importida 'fmt'

func jagamine ( a, b ujuk64 ) ( float64, viga ) {
kui b == 0 {
tagasi 0 , fmt.Errorf ( 'ei saa nulliga jagada' )
}
tagasi a / b, null
}
func main ( ) {
tulemus, err := jaga ( 13 , 3 )
kui eks ! = null {
fmt.Printf ( 'Viga: %v \n ' , eks )
} muidu {
fmt.Printf ( 'Tulemus: %f \n ' , tulemus )
}
tulemus, err = jaga ( 23 , 0 )
kui eks ! = null {
fmt.Printf ( 'Viga: %v \n ' , eks )
} muidu {
fmt.Printf ( 'Tulemus: %f \n ' , tulemus )
}
}

Sellel joonisel kasutatakse jagamisfunktsiooni kahe väärtuse jagamiseks. Väljund on selle tegemise tulemus. Kui teine ​​number on 0, tekitab funktsioon vea koos selge veateatega.

Divide kutsutakse põhifunktsioonis kaks korda: üks kord kehtivate sisenditega ja üks kord kehtetu sisendiga. Kui eks! = null lauset kasutatakse, et teha kindlaks, kas iga kord, kui jagamisfunktsiooni kasutatakse, ilmnes viga. Veateade prinditakse selle ilmnemisel. Kui ei, siis tulemus prinditakse.

Väljund

4: edasilükkamine, paanika ja taastumine

Golang pakub ka edasi lükata lause, mida kasutatakse funktsiooni täitmiseks pärast programmi või konkreetse koodiploki lõpetamist. The edasi lükata lauset kasutatakse sageli koos lausega taastuda funktsioon käitusaegse paanikavigade tabamiseks ja nendest taastumiseks. Kui ilmneb käitusaegne paanikatõrge, taastuda funktsiooni kasutatakse veaolukorrast taastumiseks ja programmi kokkujooksmise vältimiseks. See on kasulik puhastustoimingute puhul, nagu failide sulgemine, võrguühenduste sulgemine või ressursside vabastamine. Nende ülesannete edasilükkamisega tagate, et need täidetakse isegi tõrke korral.

The paanika kasutatakse programmi tavapärase täitmise peatamiseks ootamatu vea ilmnemisel, samas taastuda kasutatakse paanika lahendamiseks ja programmi täitmise jätkamiseks.

pakett peamine

importida 'fmt'

func recoveryFromPanic ( ) {
kui r := taastuma ( ) ; r ! = null {
fmt.Println ( 'Paanikast toibunud:' , r )
}
}
func jagamine ( x,y float64 ) ujuk64 {
lükka Paanikast taastumist edasi ( )

kui ja == 0 {
paanika ( 'ei saa nulliga jagada' )
}
tagasi x / ja
}
func main ( ) {
fmt.Println ( jagama ( 13 , 3 ) )
fmt.Println ( jagama ( 23 , 0 ) )
}

Ülaltoodud koodis kasutatakse jagamisfunktsiooni kahe ujukoma väärtuse jagamiseks. Väljund on selle tegemise tulemus. Funktsioon väljastab kohandatud veateate, kui teine ​​arv on null. Edasilükkamise avaldust kasutatakse paanikast taastuma funktsiooni. The paanikast taastuma funktsioon tuvastab jagamisfunktsioonis juhtunud paanika ja prindib vea, kui see juhtus.

Divide kutsutakse põhifunktsioonis kaks korda: üks kord kehtivate sisenditega ja üks kord kehtetu sisendiga. The fmt.Println funktsioon prindib funktsiooni väljundi iga kord, kui jagamisfunktsiooni käitatakse. The paanikast taastuma funktsioon tuvastab paanika, kui see juhtub, ja prindib veateate, kui see juhtub.

Väljund

Pärast vea tuvastamist taastus programm paanikast ja jätkas töötamist. Kood sattus aga paanikasse ega tagastanud teisel jagamiskutsel väärtust, mistõttu tagastas see nulli.

5: Viga pakkimisel

Go sisaldab ka funktsiooni, mida nimetatakse Viga pakkimisel , mis võimaldab lisada veateatele täiendavat konteksti. See on abiks probleemide salvestamisel või veateadetes täiendavate üksikasjade esitamisel. Seda saab teha, luues veatüübi, mis sisaldab algset viga ja täiendavat konteksti.

pakett peamine

importida 'vead'
importida 'fmt'

func main ( ) {
kui eksitus := riba ( ) ; eks ! = null {
fmt.Println ( eks )
}
}
func jagamine ( a, b ujuk64 ) ( float64, viga ) {
kui b == 0 {
tagasi 0 , vead.Uus ( 'nulliga jagamine' )
}
tagasi a / b, null
}
func baar ( ) ( viga viga ) {
_, err = jaga ( 42 , 0 )
kui eks ! = null {
tagasi fmt.Errorf ( 'arvutamine ebaõnnestus: %w' , eks )
}
tagasi null
}

Ülaltoodud koodis arvutab jagamisfunktsioon selles näites kahe arvu suhte ja annab vea, kui teine ​​väärtus on null. Ribafunktsioon kutsub välja funktsiooni jagamise ja murrab seejärel vea selle jagama tagastab uue vea teatega, mis sisaldab funktsiooni fmt.Errorf kasutades algset veateadet. Ribafunktsiooni kutsub esile põhifunktsioon, mis prindib ka kõik tagastatavad vead.

Väljund

Järeldus

Tarkvaraarendus peab sisaldama vigade käsitlemine , ja Golangil on erinevad sisseehitatud funktsioonid ja meetodid selle elegantseks tegemiseks. Need mehhanismid võimaldavad arendajatel vigu tabada ja neist taastuda, vältida programmide kokkujooksmisi ja edastada lõppkasutajatele informatiivseid veateateid. Neid veakäsitlusmehhanisme tõhusalt kasutades saavad arendajad luua tugevaid, usaldusväärseid ja tõhusaid tarkvararakendusi.