Ako riešiť chyby v Golang?

Ako Riesit Chyby V Golang



Go je obľúbený programovací jazyk, ktorý si získal popularitu vďaka svojej účinnosti, rýchlosti a efektívnosti. Počas fázy vývoja a vykonávania sa však môžu vyskytnúť chyby, rovnako ako pri akomkoľvek inom programovacom jazyku. Efektívne spracovanie chýb je nevyhnutné na zabezpečenie spoľahlivosti a stability vašich programov Go.

Tento článok preskúma niekoľko metód a odporúčaných postupov na správu chýb v Go.







Riešenie chýb v Golangu

V Go môžete zvládnuť chyby prostredníctvom nižšie uvedených metód:



1: Funkcia New().

Jazyk Go poskytuje Nový() funkcia na správu chýb. Táto funkcia, dostupná v zabudovanom chybovom balíku, umožňuje vývojárom vytvárať vlastné chybové hlásenia pre ich programy. Využitím Nový() môžu vývojári efektívne riešiť chyby a poskytovať používateľom zmysluplné chybové hlásenia.



hlavný balík

importovať 'chyby'
importovať 'fmt'

kontrola funkčnosti ( reťazec mena ) chyba {
nChyba := chyby.Nové ( 'Neplatné meno' )
ak názov ! = 'linux' {
vrátiť nChyba
}
vrátiť nula
}
func main ( ) {
meno := 'linux'
chyba := kontrola ( názov )
ak chybovať ! = nula {
fmt.Println ( chybovať )
} inak {
fmt.Println ( 'platný názov' )
}
}





Vyššie uvedený kód používa Nový() checkName funkciu, aby ste zistili, či je reťazec Linux zodpovedá uvedenému názvu. Funkcia vygeneruje chybu v správe Neplatné meno ak meno nie je Linux . Funkcia vráti nulu, aby ukázala, že nedošlo k žiadnej chybe, ak sa názov rovná Linux .

Premenná názvu je nastavená na Linux vo volaní hlavnej funkcie na checkName funkcia, ktorá berie ako argument aj názov premennej. Hlavná funkcia vytlačí chybové hlásenie, ak je checkName funkcia vráti chybu. Hlavná funkcia vytlačí Platný názov ak checkName funkcia vráti nulu.



Výkon

2: Funkcia Errorf().

The Errorf() Funkcia Go nám umožňuje spracovávať aj chyby. Errorf() nám dáva možnosť formátovania chybového hlásenia. Importovaním balíka fmt ho môžu vývojári využiť na prispôsobenie chybových hlásení tak, aby vyhovovali ich potrebám. Errorf() zefektívňuje a zlepšuje efektivitu riadenia a prenosu chýb v Go.

hlavný balík
importovať 'fmt'

func div ( n1, n2 vy ) chyba {

ak n2 == 0 {
vrátiť fmt.Errorf ( '%d / %d.' \n Číslo nemožno deliť nulou' , n1, n2 )
}
vrátiť nula
}
func main ( ) {
chyba := div ( 42 , 0 )
ak chybovať ! = nula {
fmt.Printf ( 'chyba: %s' , chyba )
} inak {
fmt.Println ( 'Platná divízia' )
}
}

Vo vyššie uvedenom kóde je div funkcia akceptuje dva celočíselné vstupy, n1 a n2, a ak je n2 nula, vytvorí chybu. Funkcia vygeneruje chybu so správou, ktorá obsahuje hodnoty n1 a n2, ak je n2 nula. Funkcia vráti nulu, aby ukázala, že nedošlo k chybe, ak n2 nie je nula.

Chyby, ktoré div vráti, sa uložia do premennej err, keď hlavná funkcia spustí div s hodnotami 42 a 0. Hlavná funkcia používa fmt.Printf na zobrazenie chybového hlásenia, ak funkcia div vráti chybu. Hlavná funkcia vytlačí Platná divízia ak funkcia div vráti nulu.

Výkon

3: Explicitné spracovanie chýb

Go podporuje explicitnú správu chýb v porovnaní s inými programovacími jazykmi, ktoré sa často spoliehajú na výnimky. Tento prístup nabáda vývojárov, aby používali príkazy if na explicitnú kontrolu chýb, namiesto toho, aby sa spoliehali na bloky try-catch. Týmto spôsobom je pravdepodobnejšie, že sa chyby nájdu a správne odstránia. Na uľahčenie tohto poskytuje Go ak chyba != nula vyhlásenie, ktoré umožňuje vývojárom skontrolovať chyby po vykonaní funkcie a na základe výsledku vykonať príslušné akcie. S explicitným spracovaním chýb ponúka Go štruktúrovanejší a spoľahlivejší prístup k správe chýb.

hlavný balík
importovať 'fmt'

func rozdeliť ( a, b float64 ) ( float64, chyba ) {
ak b == 0 {
vrátiť 0 , fmt.Errorf ( 'nedá sa deliť nulou' )
}
vrátiť a / b, nula
}
func main ( ) {
výsledok, chyba := deliť ( 13 , 3 )
ak chybovať ! = nula {
fmt.Printf ( 'Chyba: %v \n ' , chyba )
} inak {
fmt.Printf ( 'Výsledok: %f \n ' , výsledok )
}
výsledok, err = deliť ( 23 , 0 )
ak chybovať ! = nula {
fmt.Printf ( 'Chyba: %v \n ' , chyba )
} inak {
fmt.Printf ( 'Výsledok: %f \n ' , výsledok )
}
}

Na tomto obrázku sa funkcia delenia používa na rozdelenie dvoch hodnôt. Výstup je výsledkom tohto konania. Ak je druhé číslo 0, funkcia vygeneruje chybu so zreteľným chybovým hlásením.

Divide sa vo funkcii main volá dvakrát: raz s platnými vstupmi a raz s neplatným vstupom. Ak, ak chyba! = nula sa používa na určenie, či došlo k chybe pri každom použití deliacej funkcie. Ak sa vyskytne chybové hlásenie, vytlačí sa chybové hlásenie. Ak nie, výsledok sa vytlačí.

Výkon

4: Odložiť, panika a zotaviť sa

Golang tiež poskytuje odložiť príkaz, ktorý sa používa na vykonanie funkcie po dokončení programu alebo konkrétneho bloku kódu. The odložiť vyhlásenie sa často používa v spojení s zotaviť sa funkcia na zachytenie a obnovenie z runtime panických chýb. Keď sa vyskytne panická chyba runtime, zotaviť sa funkcia sa používa na zotavenie sa z chybového stavu a zabránenie zlyhaniu programu. Je to užitočné pri úlohách čistenia, ako je zatváranie súborov, zatváranie sieťových pripojení alebo uvoľňovanie prostriedkov. Odložením týchto úloh zabezpečíte, že sa vykonajú, aj keď sa vyskytne chyba.

The panika sa používa na zastavenie normálneho vykonávania programu, keď sa vyskytne neočakávaná chyba zotaviť sa sa používa na zvládnutie paniky a pokračovanie vo vykonávaní programu.

hlavný balík

importovať 'fmt'

func recoveryFromPanic ( ) {
ak r := zotaviť sa ( ) ; r ! = nula {
fmt.Println ( 'Zotavený z paniky:' , r )
}
}
func rozdeliť ( x,y float64 ) plavák64 {
odložiť zotavenie z paniky ( )

ak a == 0 {
panika ( 'nedá sa deliť nulou' )
}
vrátiť X / a
}
func main ( ) {
fmt.Println ( rozdeliť ( 13 , 3 ) )
fmt.Println ( rozdeliť ( 23 , 0 ) )
}

Vo vyššie uvedenom kóde sa funkcia delenia používa na rozdelenie dvoch hodnôt s pohyblivou rádovou čiarkou. Výstup je výsledkom tohto konania. Ak je druhé číslo nula, funkcia vygeneruje prispôsobené chybové hlásenie. Príkaz odložiť sa používa na vyvolanie zotaviť sa z paniky funkciu. The zotaviť sa z paniky funkcia zistí paniku, ktorá nastala vo funkcii rozdelenia, a vypíše chybu, ak k nej dôjde.

Divide sa vo funkcii main volá dvakrát: raz s platnými vstupmi a raz s neplatným vstupom. The fmt.Println funkcia vytlačí výstup funkcie pri každom spustení funkcie delenia. The zotaviť sa z paniky funkcia zistí paniku, ak k nej dôjde, a vypíše chybu, ak sa tak stane.

Výkon

Po zistení chyby sa program prebral z paniky a bežal ďalej. Kód však spanikáril a pri druhom volaní na rozdelenie nevrátil hodnotu, a preto vrátil nulu.

5: Chyba balenia

Go obsahuje aj funkciu známu ako Chyba pri balení , ktorá vám umožňuje pridať ďalší kontext k chybovej správe. Je to užitočné pri zaznamenávaní problémov alebo poskytovaní ďalších podrobností v chybových hláseniach. Dá sa to dosiahnuť vytvorením typu chyby, ktorý vloží pôvodnú chybu a ďalší kontext.

hlavný balík

importovať 'chyby'
importovať 'fmt'

func main ( ) {
ak chyba := bar ( ) ; chybovať ! = nula {
fmt.Println ( chybovať )
}
}
func rozdeliť ( a, b float64 ) ( float64, chyba ) {
ak b == 0 {
vrátiť 0 , chyby.Nové ( 'delenie nulou' )
}
vrátiť a / b, nula
}
func bar ( ) ( chyba chyba ) {
_, chybovať = deliť ( 42 , 0 )
ak chybovať ! = nula {
vrátiť fmt.Errorf ( 'nepodarilo sa vypočítať: %w' , chyba )
}
vrátiť nula
}

Vo vyššie uvedenom kóde funkcia delenie vypočíta pomer dvoch čísel v tomto príklade a vyvolá chybu, ak je druhá hodnota nula. Funkcia bar zavolá funkciu rozdelenia a potom zabalí chybu, ktorá rozdeliť sa vráti v novej chybe so správou, ktorá obsahuje pôvodné chybové hlásenie pomocou funkcie fmt.Errorf. Funkcia bar je volaná hlavnou funkciou, ktorá tiež vypíše všetky chyby, ktoré vráti.

Výkon

Záver

Vývoj softvéru musí zahŕňať spracovanie chýb a Golang má rôzne vstavané funkcie a metódy, ako to urobiť elegantne. Tieto mechanizmy umožňujú vývojárom zachytiť a zotaviť sa z chýb, predchádzať zlyhaniu programu a poskytovať koncovým používateľom informatívne chybové hlásenia. Efektívnym používaním týchto mechanizmov na odstraňovanie chýb môžu vývojári vytvárať robustné, spoľahlivé a efektívne softvérové ​​aplikácie.