Kaip ištaisyti klaidas Golange?

Kaip Istaisyti Klaidas Golange



Go yra labai mėgstama programavimo kalba, kuri išpopuliarėjo dėl savo efektyvumo, greičio ir efektyvumo. Tačiau klaidų gali įvykti kūrimo ir vykdymo fazėse, kaip ir naudojant bet kurią kitą programavimo kalbą. Veiksmingas klaidų valdymas yra būtinas norint užtikrinti Go programų patikimumą ir stabilumą.

Šiame straipsnyje bus nagrinėjami keli „Go“ klaidų valdymo metodai ir rekomenduojamos procedūros.







Tvarkyti klaidas Golange

„Go“ galite tvarkyti klaidas toliau nurodytais metodais:



1: Nauja() funkcija

Go kalba suteikia Naujas () funkcija valdyti klaidas. Ši funkcija, pasiekiama integruotame klaidų pakete, leidžia kūrėjams kurti pasirinktinius klaidų pranešimus savo programoms. Naudojant Naujas () funkcija, kūrėjai gali efektyviai tvarkyti klaidas ir vartotojams pateikti reikšmingus klaidų pranešimus.



pagrindinis paketas

importuoti 'klaidos'
importuoti 'fmt'

funkcijų patikrinimas ( pavadinimo eilutė ) klaida {
nError := errors.New ( 'Neteisingas vardas' )
jeigu vardas ! = 'Linux' {
grąžinti nError
}
grąžinti nulis
}
pagrindinė funkcija ( ) {
vardas := 'Linux'
klaida := patikrinkite ( vardas )
jeigu klysti ! = nulis {
fmt.Println ( klysti )
} Kitas {
fmt.Println ( 'Galiojantis vardas' )
}
}





Aukščiau pateiktas kodas naudoja Naujas () checkName funkcija, kad pamatytumėte, ar eilutė Linux atitinka nurodytą vardą. Funkcija pateikia klaidą su pranešimu Neteisingas vardas jei vardo nėra Linux . Funkcija grąžina nulį, kad parodytų, kad nebuvo jokios klaidos, jei pavadinimas yra lygus Linux .

Vardo kintamasis nustatytas į Linux pagrindinės funkcijos iškvietime į checkName funkcija, kuri taip pat naudoja pavadinimo kintamąjį kaip argumentą. Pagrindinė funkcija išspausdina klaidos pranešimą, jei checkName funkcija grąžina klaidą. Pagrindinė funkcija spausdina Galiojantis vardas jei checkName funkcija grąžina nulį.



Išvestis

2: Errorf() funkcija

The Klaida () funkcija Go leidžia tvarkyti ir klaidas. Klaida () suteikia mums galimybę suformatuoti klaidos pranešimą. Importuodami fmt paketą, kūrėjai gali jį naudoti norėdami pritaikyti klaidų pranešimus pagal savo poreikius. Klaida () supaprastina ir pagerina „Go“ klaidų valdymo ir perdavimo efektyvumą.

pagrindinis paketas
importuoti 'fmt'

funkcinis skyr ( n1, n2 tu ) klaida {

jeigu n2 == 0 {
grąžinti fmt.Errorf ( „%d / %d \n Negalima padalyti skaičiaus iš nulio' , n1, n2 )
}
grąžinti nulis
}
pagrindinė funkcija ( ) {
klaida := div ( 42 , 0 )
jeigu klysti ! = nulis {
fmt.Printf ( 'klaida: %s' , klysta )
} Kitas {
fmt.Println ( „Galiojantis skyrius“ )
}
}

Aukščiau pateiktame kode div funkcija priima du sveikųjų skaičių įvestis, n1 ir n2, o jei n2 yra nulis, ji sukuria klaidą. Funkcija sukuria klaidą pranešimu, kuriame yra n1 ir n2 reikšmės, jei n2 yra nulis. Funkcija grąžina nulį, kad parodytų, kad nebuvo jokios klaidos, jei n2 nėra nulis.

Klaida, kurią grąžina div, išsaugoma err kintamajame, kai pagrindinė funkcija vykdo div su reikšmėmis 42 ir 0. Pagrindinė funkcija naudoja fmt.Printf, kad būtų rodomas klaidos pranešimas, jei funkcija div grąžina klaidą. Pagrindinė funkcija spausdina Galiojantis skyrius jei funkcija div grąžina nulį.

Išvestis

3: Aiškus klaidų tvarkymas

„Go“ skatina aiškų klaidų valdymą, palyginti su kitomis programavimo kalbomis, kurios dažnai priklauso nuo išimčių. Šis metodas skatina kūrėjus naudoti if teiginius, kad būtų aiškiai patikrinta, ar nėra klaidų, o ne pasikliauti bandomaisiais blokais. Tai darant, yra didesnė tikimybė, kad klaidos bus aptiktos ir tinkamai ištaisytos. Kad tai palengvintų, „Go“ teikia jei klysta! = nulis pareiškimas, leidžiantis kūrėjams patikrinti, ar nėra klaidų, atlikus funkciją, ir pagal rezultatą imtis atitinkamų veiksmų. Naudodama aiškų klaidų tvarkymą, „Go“ siūlo struktūriškesnį ir patikimesnį klaidų valdymo metodą.

pagrindinis paketas
importuoti 'fmt'

funkcinis padalijimas ( a, b float64 ) ( float64, klaida ) {
jeigu b == 0 {
grąžinti 0 , fmt.Errorf ( 'negalima dalyti iš nulio' )
}
grąžinti a / b, nulis
}
pagrindinė funkcija ( ) {
rezultatas, klaida := padalinti ( 13 , 3 )
jeigu klysti ! = nulis {
fmt.Printf ( 'Klaida: %v \n , klysta )
} Kitas {
fmt.Printf ( 'Rezultatas: %f \n , rezultatas )
}
rezultatas, err = padalinti ( 23 , 0 )
jeigu klysti ! = nulis {
fmt.Printf ( 'Klaida: %v \n , klysta )
} Kitas {
fmt.Printf ( 'Rezultatas: %f \n , rezultatas )
}
}

Šioje iliustracijoje padalijimo funkcija naudojama padalyti dvi reikšmes. Rezultatas yra to darymo rezultatas. Jei antrasis skaičius yra 0, funkcija pateikia klaidą su atskiru klaidos pranešimu.

Dalytis pagrindinėje funkcijoje iškviečiama du kartus: vieną kartą su galiojančiais įvestimis ir vieną kartą su netinkama įvestimi. Jei klysta! = nulis sakinys naudojamas norint nustatyti, ar kiekvieną kartą panaudojus padalijimo funkciją įvyko klaida. Jei toks įvyksta, išspausdinamas klaidos pranešimas. Jei ne, rezultatas išspausdinamas.

Išvestis

4: atidėti, panikuoti ir atsigauti

Golangas taip pat teikia atidėti teiginys, naudojamas funkcijai įvykdyti užbaigus programą arba konkretų kodo bloką. The atidėti teiginys dažnai naudojamas kartu su atsigauti funkcija pagauti ir atsigauti po vykdymo laiko panikos klaidų. Kai įvyksta vykdymo laiko panikos klaida, atsigauti Funkcija naudojama norint atsigauti po klaidos ir užkirsti kelią programai strigti. Tai naudinga atliekant valymo užduotis, tokias kaip failų uždarymas, tinklo jungčių uždarymas arba išteklių atleidimas. Atidėdami šias užduotis, užtikrinate, kad jos bus vykdomos net ir įvykus klaidai.

The panika naudojamas norint sustabdyti normalų programos vykdymą, kai įvyksta netikėta klaida, o atsigauti naudojamas panikai valdyti ir programos vykdymui tęsti.

pagrindinis paketas

importuoti 'fmt'

func recoveryFromPanic ( ) {
jeigu r := atsigauti ( ) ; r ! = nulis {
fmt.Println ( 'Atsigavo nuo panikos:' , r )
}
}
funkcinis padalijimas ( x,y float64 ) plūdė64 {
atidėti atsigavimą iš Panikos ( )

jeigu ir == 0 {
panika ( 'negalima dalyti iš nulio' )
}
grąžinti x / ir
}
pagrindinė funkcija ( ) {
fmt.Println ( padalinti ( 13 , 3 ) )
fmt.Println ( padalinti ( 23 , 0 ) )
}

Aukščiau pateiktame kode dalybos funkcija naudojama padalyti dvi slankiojo kablelio reikšmes. Rezultatas yra to darymo rezultatas. Funkcija išveda tinkintą klaidos pranešimą, jei antrasis skaičius yra nulis. Atidėjimo pareiškimas naudojamas iškviesti atsigauti nuo panikos funkcija. The atsigauti nuo panikos funkcija aptiks paniką, įvykusią padalijimo funkcijoje, ir išspausdins klaidą, jei ji įvyko.

Dalytis pagrindinėje funkcijoje iškviečiama du kartus: vieną kartą su galiojančiais įvestimis ir vieną kartą su netinkama įvestimi. The fmt.Println funkcija spausdina funkcijos išvestį kiekvieną kartą, kai vykdoma padalijimo funkcija. The atsigauti nuo panikos funkcija aptiks paniką, jei taip atsitiks, ir išspausdins klaidą, jei taip atsitiks.

Išvestis

Aptikusi klaidą programa atsigavo iš panikos ir toliau veikė. Tačiau kodas panikavo ir negrąžino reikšmės antrojo kvietimo dalyti, todėl grąžino nulį.

5: Įvyniojimo klaida

„Go“ taip pat apima funkciją, vadinamą Apvyniojant įvyko klaida , kuri leidžia prie klaidos pranešimo pridėti papildomo konteksto. Tai naudinga registruojant problemas arba pateikiant daugiau informacijos klaidų pranešimuose. Tai galima padaryti sukuriant klaidos tipą, kuriame yra pradinė klaida ir papildomas kontekstas.

pagrindinis paketas

importuoti 'klaidos'
importuoti 'fmt'

pagrindinė funkcija ( ) {
jeigu klaida := baras ( ) ; klysti ! = nulis {
fmt.Println ( klysti )
}
}
funkcinis padalijimas ( a, b float64 ) ( float64, klaida ) {
jeigu b == 0 {
grąžinti 0 , klaidos.Naujas ( 'dalyba iš nulio' )
}
grąžinti a / b, nulis
}
funkcinis baras ( ) ( klaida klaida ) {
_, err = padalinti ( 42 , 0 )
jeigu klysti ! = nulis {
grąžinti fmt.Errorf ( 'nepavyko apskaičiuoti: %w' , klysta )
}
grąžinti nulis
}

Aukščiau pateiktame kode dalybos funkcija apskaičiuoja dviejų skaičių santykį šiame pavyzdyje ir pateikia klaidą, jei antroji reikšmė lygi nuliui. Juostos funkcija iškviečia padalijimo funkciją ir apvynioja klaidą padalinti grąžina naują klaidą su pranešimu, kuriame yra pradinis klaidos pranešimas naudojant fmt.Errorf funkciją. Juostos funkciją iškviečia pagrindinė funkcija, kuri taip pat išspausdina visas grąžinamas klaidas.

Išvestis

Išvada

Programinės įrangos kūrimas turi apimti klaidų tvarkymas , o Golang turi įvairių integruotų funkcijų ir metodų, leidžiančių tai padaryti grakščiai. Šie mechanizmai leidžia kūrėjams užfiksuoti klaidas ir jas atkurti, užkirsti kelią programos gedimams ir galutiniams vartotojams pateikti informatyvius klaidų pranešimus. Veiksmingai naudodami šiuos klaidų valdymo mechanizmus, kūrėjai gali sukurti tvirtas, patikimas ir efektyvias programinės įrangos programas.