Jak zacházet s chybami v Golang?

Jak Zachazet S Chybami V Golang



Go je oblíbený programovací jazyk, který si získal popularitu díky své účinnosti, rychlosti a účinnosti. Chyby však mohou nastat během fáze vývoje a provádění, stejně jako u jakéhokoli jiného programovacího jazyka. Efektivní řešení chyb je zásadní pro zajištění spolehlivosti a stability vašich programů Go.

Tento článek prozkoumá několik metod a doporučených postupů pro správu chyb v Go.







Ošetřete chyby v Golangu

V Go můžete zvládnout chyby prostřednictvím níže uvedených metod:



1: Funkce New().

Jazyk Go poskytuje Nový() funkce pro správu chyb. Tato funkce, která je k dispozici v integrovaném balíčku chyb, umožňuje vývojářům vytvářet vlastní chybové zprávy pro jejich programy. Pomocí Nový() mohou vývojáři efektivně řešit chyby a poskytovat uživatelům smysluplné chybové zprávy.



hlavní balíček

import 'chyby'
import 'fmt'

funkční kontrola ( jmenný řetězec ) chyba {
nChyba := chyby.Nové ( 'Neplatné jméno' )
-li název ! = 'linux' {
vrátit se nChyba
}
vrátit se nula
}
func main ( ) {
jméno := 'linux'
chyba := kontrola ( název )
-li chybovat ! = nula {
fmt.Println ( chybovat )
} jiný {
fmt.Println ( 'Platné jméno' )
}
}





Výše uvedený kód používá Nový() checkName funkce, abyste zjistili, zda řetězec Linux odpovídá uvedenému názvu. Funkce vytvoří chybu se zprávou Neplatné jméno pokud jméno není Linux . Funkce vrátí nulu, aby ukázala, že nedošlo k žádné chybě, pokud je jméno rovno Linux .

Proměnná name je nastavena na Linux ve volání hlavní funkce na checkName funkce, která také bere jako argument název proměnné. Hlavní funkce vytiskne chybovou zprávu, pokud je checkName funkce vrací chybu. Hlavní funkce vytiskne Platný název pokud checkName funkce vrací nulu.



Výstup

2: Funkce Errorf().

The Errorf() funkce v Go nám také umožňuje zpracovávat chyby. Errorf() nám dává možnost formátování chybové zprávy. Importováním balíčku fmt jej mohou vývojáři využít k přizpůsobení chybových zpráv tak, aby vyhovovaly jejich potřebám. Errorf() zjednodušuje a zlepšuje efektivitu správy a přenosu chyb v Go.

hlavní balíček
import 'fmt'

func div ( n1, n2 vy ) chyba {

-li n2 == 0 {
vrátit se fmt.Errorf ( '%d / %d.' \n Nelze dělit číslo nulou' , n1, n2 )
}
vrátit se nula
}
func main ( ) {
chyba := div ( 42 , 0 )
-li chybovat ! = nula {
fmt.Printf ( 'chyba: %s' , chyba )
} jiný {
fmt.Println ( 'Platná divize' )
}
}

Ve výše uvedeném kódu je div funkce přijímá dva celočíselné vstupy, n1 a n2, a pokud je n2 nula, vytváří chybu. Funkce vytvoří chybu se zprávou, která obsahuje hodnoty n1 a n2, pokud je n2 nula. Funkce vrátí nulu, aby ukázala, že nedošlo k chybě, pokud n2 není nula.

Chyby, které div vrátí, se uloží do proměnné err, když hlavní funkce spustí div s hodnotami 42 a 0. Funkce main používá fmt.Printf k zobrazení chybové zprávy, pokud funkce div vrátí chybu. Hlavní funkce se vytiskne Platná divize pokud funkce div vrátí nulu.

Výstup

3: Explicitní řešení chyb

Go podporuje explicitní správu chyb ve srovnání s jinými programovacími jazyky, které často spoléhají na výjimky. Tento přístup vybízí vývojáře, aby používali příkazy if k explicitní kontrole chyb, místo aby se spoléhali na bloky try-catch. Tímto způsobem je pravděpodobnější, že chyby budou nalezeny a řádně opraveny. Pro usnadnění tohoto poskytuje Go pokud chyba != nula příkaz, který vývojářům umožňuje po provedení funkce zkontrolovat chyby a na základě výsledku provést příslušné akce. Díky explicitnímu zpracování chyb nabízí Go strukturovanější a spolehlivější přístup ke správě chyb.

hlavní balíček
import 'fmt'

func předěl ( a, b plovoucí64 ) ( float64, chyba ) {
-li b == 0 {
vrátit se 0 , fmt.Errorf ( 'nelze dělit nulou' )
}
vrátit se A / b, nula
}
func main ( ) {
výsledek, chyba := dělit ( 13 , 3 )
-li chybovat ! = nula {
fmt.Printf ( 'Chyba: %v \n ' , chyba )
} jiný {
fmt.Printf ( 'Výsledek: %f \n ' , výsledek )
}
výsledek, err = dělit ( 23 , 0 )
-li chybovat ! = nula {
fmt.Printf ( 'Chyba: %v \n ' , chyba )
} jiný {
fmt.Printf ( 'Výsledek: %f \n ' , výsledek )
}
}

Na tomto obrázku je funkce dělení použita k rozdělení dvou hodnot. Výstup je výsledkem toho. Pokud je druhé číslo 0, funkce vytvoří chybu s odlišnou chybovou zprávou.

Divide se ve funkci main volá dvakrát: jednou s platnými vstupy a jednou s neplatným vstupem. Pokud chyba! = nula příkaz se používá k určení, zda došlo k chybě při každém použití funkce dělení. Pokud k nějaké dojde, vytiskne se chybová zpráva. Pokud ne, vytiskne se výsledek.

Výstup

4: Odložit, panika a zotavit

Golang také poskytuje odložit příkaz, který se používá k provedení funkce po dokončení programu nebo konkrétního bloku kódu. The odložit prohlášení se často používá ve spojení s uzdravit se funkce pro zachycení a zotavení z runtime panických chyb. Když dojde k panické chybě za běhu, uzdravit se Funkce se používá k zotavení z chybového stavu a zabránění pádu programu. To je užitečné pro úkoly čištění, jako je zavírání souborů, zavírání síťových připojení nebo uvolňování prostředků. Odložením těchto úloh zajistíte, že budou provedeny, i když dojde k chybě.

The panika se používá k zastavení normálního provádění programu, když dojde k neočekávané chybě uzdravit se se používá ke zvládnutí paniky a pokračování v provádění programu.

hlavní balíček

import 'fmt'

func recoveryFromPanic ( ) {
-li r := obnovit ( ) ; r ! = nula {
fmt.Println ( 'Vzpamatováno z paniky:' , r )
}
}
func předěl ( x,y float64 ) plovák64 {
odložit zotavení z paniky ( )

-li a == 0 {
panika ( 'nelze dělit nulou' )
}
vrátit se X / a
}
func main ( ) {
fmt.Println ( rozdělit ( 13 , 3 ) )
fmt.Println ( rozdělit ( 23 , 0 ) )
}

Ve výše uvedeném kódu se funkce dělení používá k rozdělení dvou hodnot s plovoucí desetinnou čárkou. Výstup je výsledkem toho. Pokud je druhé číslo nula, funkce vygeneruje přizpůsobené chybové hlášení. Příkaz odložit se používá k vyvolání zotavit se z paniky funkce. The zotavit se z paniky Funkce detekuje paniku, ke které došlo uvnitř funkce dělení, a vypíše chybu, pokud k ní došlo.

Divide se ve funkci main volá dvakrát: jednou s platnými vstupy a jednou s neplatným vstupem. The fmt.Println funkce vytiskne výstup funkce při každém spuštění funkce dělení. The zotavit se z paniky Pokud k ní dojde, funkce detekuje paniku a vytiskne chybu.

Výstup

Po zjištění chyby se program vzpamatoval z paniky a běžel dál. Kód však zpanikařil a při druhém volání k rozdělení nevrátil hodnotu, a proto vrátil nulu.

5: Chyba balení

Go také obsahuje funkci známou jako Chyba balení , která umožňuje přidat další kontext k chybové zprávě. To je užitečné pro zaznamenávání problémů nebo poskytování dalších podrobností v chybových zprávách. Toho lze dosáhnout vytvořením typu chyby, který vloží původní chybu a další kontext.

hlavní balíček

import 'chyby'
import 'fmt'

func main ( ) {
-li chyba := bar ( ) ; chybovat ! = nula {
fmt.Println ( chybovat )
}
}
func předěl ( a, b plovoucí64 ) ( float64, chyba ) {
-li b == 0 {
vrátit se 0 , chyby.Nové ( 'dělení nulou' )
}
vrátit se A / b, nula
}
func bar ( ) ( chyba chyba ) {
_, chybovat = dělit ( 42 , 0 )
-li chybovat ! = nula {
vrátit se fmt.Errorf ( 'nepodařilo se vypočítat: %w' , chyba )
}
vrátit se nula
}

Ve výše uvedeném kódu funkce dělení vypočítá poměr dvou čísel v tomto příkladu a vyvolá chybu, pokud je druhá hodnota nula. Funkce bar volá funkci rozdělení a poté zabalí chybu, která rozdělit vrátí v nové chybě se zprávou, která obsahuje původní chybovou zprávu pomocí funkce fmt.Errorf. Funkce lišta je volána hlavní funkcí, která také vypisuje případné chyby, které vrátí.

Výstup

Závěr

Vývoj softwaru musí zahrnovat vypořádání se s chybou a Golang má různé vestavěné funkce a metody, jak to udělat elegantně. Tyto mechanismy umožňují vývojářům zachytit a zotavit se z chyb, předcházet zhroucení programu a poskytovat koncovým uživatelům informativní chybové zprávy. Efektivním používáním těchto mechanismů pro řešení chyb mohou vývojáři vytvářet robustní, spolehlivé a efektivní softwarové aplikace.