Kako postupati s pogreškama u Golangu?

Kako Postupati S Pogreskama U Golangu



Go je popularan programski jezik kojemu je porasla popularnost zbog svoje učinkovitosti, brzine i učinkovitosti. Međutim, pogreške se mogu dogoditi tijekom faza razvoja i izvođenja, baš kao i kod bilo kojeg drugog programskog jezika. Učinkovito rukovanje pogreškama ključno je za osiguranje pouzdanosti i stabilnosti vaših Go programa.

Ovaj će članak ispitati nekoliko metoda i preporučenih postupaka za upravljanje pogreškama u Gou.







Rješavanje pogrešaka u Golangu

U Go-u možete obraditi pogreške kroz dolje navedene metode:



1: Funkcija New().

Go jezik pruža Novi() funkcija za upravljanje pogreškama. Ova funkcija, dostupna u ugrađenom paketu pogrešaka, omogućuje programerima stvaranje prilagođenih poruka o pogreškama za svoje programe. Korištenjem Novi() programeri mogu učinkovito rješavati pogreške i korisnicima pružiti smislene poruke o pogreškama.



glavni paket

uvoz 'greške'
uvoz 'fmt'

funk provjera ( niz imena ) greška {
nError := errors.Novo ( 'Nevažeće ime' )
ako Ime ! = 'Linux' {
povratak nPogreška
}
povratak nula
}
funkcija glavna ( ) {
ime := 'Linux'
pogreška := provjeriti ( Ime )
ako pogriješiti ! = nula {
fmt.Println ( pogriješiti )
} drugo {
fmt.Println ( 'Valjano ime' )
}
}





Gornji kod koristi Novi() checkName funkciju da biste vidjeli je li niz Linux odgovara navedenom imenu. Funkcija proizvodi pogrešku s porukom Nevažeći naziv ako ime nije Linux . Funkcija vraća nulu da pokaže da nije bilo pogreške ako je naziv jednak Linux .

Varijabla imena postavljena je na Linux u pozivu glavne funkcije na checkName funkcija, koja također uzima varijablu imena kao argument. Glavna funkcija ispisuje poruku o pogrešci ako je checkName funkcija vraća pogrešku. Glavna funkcija ispisuje Valjano ime ako je checkName funkcija vraća nulu.



Izlaz

2: Funkcija Errorf().

The Errorf() funkcija u Go-u omogućuje nam i rješavanje pogrešaka. Errorf() daje nam mogućnost oblikovanja poruke pogreške. Uvozom paketa fmt programeri ga mogu koristiti za prilagodbu poruka o pogreškama svojim potrebama. Errorf() pojednostavljuje i poboljšava učinkovitost upravljanja i prijenosa pogrešaka u Go.

glavni paket
uvoz 'fmt'

funkcija div ( n1, n2 ti ) greška {

ako n2 == 0 {
povratak fmt.Errorf ( '%dd \n Ne mogu podijeliti broj s nulom' , n1, n2 )
}
povratak nula
}
funkcija glavna ( ) {
pogreška := div ( 42 , 0 )
ako pogriješiti ! = nula {
fmt.Printf ( 'greška: %s' , pogriješiti )
} drugo {
fmt.Println ( 'Valjana podjela' )
}
}

U gornjem kodu, div funkcija prihvaća dva integera, n1 i n2, i ako je n2 nula, proizvodi pogrešku. Funkcija proizvodi pogrešku s porukom koja sadrži vrijednosti n1 i n2 ako je n2 nula. Funkcija vraća nulu kako bi pokazala da nije bilo pogreške ako n2 nije nula.

Pogreška koju div vraća sprema se u varijablu err kada glavna funkcija pokrene div s vrijednostima 42 i 0. Glavna funkcija koristi fmt.Printf za prikaz poruke o pogrešci ako funkcija div vrati pogrešku. Glavna funkcija ispisuje Važeća podjela ako funkcija div vrati nulu.

Izlaz

3: Eksplicitno rukovanje pogreškama

Go potiče eksplicitno upravljanje pogreškama u usporedbi s drugim programskim jezicima koji se često oslanjaju na iznimke. Ovaj pristup potiče programere da koriste if izjave za eksplicitnu provjeru pogrešaka, umjesto oslanjanja na try-catch blokove. Radeći to, vjerojatnije je da će se greške pronaći i pravilno ispraviti. Kako bi to olakšao, Go pruža if err != nula izjava, koja programerima omogućuje provjeru pogrešaka nakon izvršavanja funkcije i poduzimanje odgovarajućih radnji na temelju rezultata. Uz eksplicitno rukovanje pogreškama, Go nudi strukturiraniji i pouzdaniji pristup upravljanju pogreškama.

glavni paket
uvoz 'fmt'

func podijeliti ( a, b float64 ) ( float64, greška ) {
ako b == 0 {
povratak 0 , fmt.Errorf ( 'ne može se dijeliti s nulom' )
}
povratak a / b, nula
}
funkcija glavna ( ) {
rezultat, greška := podijeli ( 13 , 3 )
ako pogriješiti ! = nula {
fmt.Printf ( 'Pogreška: %v \n ' , pogriješiti )
} drugo {
fmt.Printf ( 'Rezultat: %f \n ' , rezultat )
}
rezultat, err = podijeliti ( 23 , 0 )
ako pogriješiti ! = nula {
fmt.Printf ( 'Pogreška: %v \n ' , pogriješiti )
} drugo {
fmt.Printf ( 'Rezultat: %f \n ' , rezultat )
}
}

U ovoj se ilustraciji funkcija dijeljenja koristi za dijeljenje dviju vrijednosti. Rezultat je rezultat toga. Ako je drugi broj 0, funkcija proizvodi pogrešku s jasnom porukom o pogrešci.

Divide se poziva dvaput u glavnoj funkciji: jednom s valjanim unosom i jednom s nevažećim unosom. The, if pogreška != ništa naredba se koristi za utvrđivanje je li došlo do pogreške svaki put kada se koristi funkcija dijeljenja. Ispisuje se poruka o pogrešci ako se pojavi. Ako nije, rezultat se ispisuje.

Izlaz

4: Odgodi, paničari i oporavi se

Golang također nudi odgoditi naredba, koja se koristi za izvršavanje funkcije nakon završetka programa ili određenog bloka koda. The odgoditi izjava se često koristi zajedno s oporavak funkcija za hvatanje i oporavak od paničkih pogrešaka tijekom izvođenja. Kada se dogodi panička pogreška prilikom izvođenja, oporavak funkcija se koristi za oporavak od stanja pogreške i sprječavanje pada programa. Ovo je korisno za zadatke čišćenja kao što su zatvaranje datoteka, zatvaranje mrežnih veza ili oslobađanje resursa. Odgađanjem ovih zadataka osiguravate njihovo izvršenje čak i ako dođe do pogreške.

The panika koristi se za zaustavljanje normalnog izvršavanja programa kada dođe do neočekivane pogreške, dok oporavak koristi se za rješavanje panike i nastavak izvođenja programa.

glavni paket

uvoz 'fmt'

func recoverFromPanic ( ) {
ako r := oporaviti se ( ) ; r ! = nula {
fmt.Println ( 'Oporavio se od panike:' , r )
}
}
func podijeliti ( x,y float64 ) plovak64 {
odgodi recoverFromPanic ( )

ako i == 0 {
panika ( 'ne može se dijeliti s nulom' )
}
povratak x / i
}
funkcija glavna ( ) {
fmt.Println ( podijeliti ( 13 , 3 ) )
fmt.Println ( podijeliti ( 23 , 0 ) )
}

U gornjem kodu, funkcija dijeljenja koristi se za dijeljenje dviju vrijednosti s pomičnim zarezom. Rezultat je rezultat toga. Funkcija ispisuje prilagođenu poruku o pogrešci ako je drugi broj nula. Naredba defer koristi se za pozivanje recoverFromPanic funkcija. The recoverFromPanic funkcija će otkriti paniku koja se dogodila unutar funkcije dijeljenja i ispisati pogrešku ako se dogodila.

Divide se poziva dvaput u glavnoj funkciji: jednom s valjanim unosom i jednom s nevažećim unosom. The fmt.Println funkcija ispisuje izlaz funkcije svaki put kada se pokrene funkcija dijeljenja. The recoverFromPanic funkcija će otkriti paniku ako se dogodi i ispisati pogrešku ako se dogodi.

Izlaz

Nakon otkrivanja greške, program se oporavio od panike i nastavio raditi. Međutim, kod se uspaničio i nije vratio vrijednost pri drugom pozivu dijeljenja, zbog čega je vratio nulu.

5: Omotavanje pogrešaka

Go također uključuje značajku poznatu kao Pogreška pri prelamanju , što vam omogućuje dodavanje dodatnog konteksta poruci pogreške. Ovo je korisno za snimanje problema ili pružanje dodatnih pojedinosti u porukama o pogreškama. To se može postići stvaranjem vrste pogreške koja ugrađuje izvornu pogrešku i dodatni kontekst.

glavni paket

uvoz 'greške'
uvoz 'fmt'

funkcija glavna ( ) {
ako pogreška := traka ( ) ; pogriješiti ! = nula {
fmt.Println ( pogriješiti )
}
}
func podijeliti ( a, b float64 ) ( float64, greška ) {
ako b == 0 {
povratak 0 , pogreške.Novo ( 'dijeljenje s nulom' )
}
povratak a / b, nula
}
func bar ( ) ( pogreška pogreška ) {
_, pogreška = podijeliti ( 42 , 0 )
ako pogriješiti ! = nula {
povratak fmt.Errorf ( 'nije uspjelo izračunati: %w' , pogriješiti )
}
povratak nula
}

U gornjem kodu, funkcija dijeljenja izračunava omjer dvaju brojeva u ovom primjeru i izbacuje pogrešku ako je druga vrijednost nula. Trakasta funkcija poziva funkciju dijeljenja i zatim omotava pogrešku koja podijeliti vraća novu pogrešku s porukom koja uključuje izvornu poruku o pogrešci pomoću funkcije fmt.Errorf. Funkciju trake poziva glavna funkcija, koja također ispisuje sve greške koje vrati.

Izlaz

Zaključak

Razvoj softvera mora uključivati obrada grešaka , a Golang ima razne ugrađene funkcije i metode za to elegantno. Ovi mehanizmi omogućuju razvojnim programerima da uhvate pogreške i oporave se od njih, spriječe pad programa i daju informativne poruke o pogrešci krajnjim korisnicima. Učinkovitom upotrebom ovih mehanizama za rukovanje pogreškama, programeri mogu izgraditi robusne, pouzdane i učinkovite softverske aplikacije.