Hogyan kezeljük a hibákat a Golangban?

Hogyan Kezeljuk A Hibakat A Golangban



A Go egy népszerű programozási nyelv, amely hatékonysága, sebessége és hatékonysága miatt egyre népszerűbb. Hibák azonban előfordulhatnak a fejlesztési és végrehajtási fázisban, akárcsak bármely más programozási nyelv esetében. A hibák hatékony kezelése elengedhetetlen a Go programok megbízhatóságának és stabilitásának biztosításához.

Ez a cikk számos módszert és javasolt eljárást vizsgál meg a Go hibáinak kezelésére.







A Golang hibáinak kezelése

A Go-ban megteheti kezelni a hibákat az alábbi módszerekkel:



1: Új() függvény

A Go nyelv biztosítja a Új() hibakezelési funkció. Ez a funkció, amely a beépített hibacsomagban érhető el, lehetővé teszi a fejlesztők számára, hogy egyedi hibaüzeneteket hozzanak létre programjaikhoz. Kihasználva a Új() funkció segítségével a fejlesztők hatékonyan kezelhetik a hibákat, és értelmes hibaüzeneteket küldhetnek a felhasználóknak.



csomag fő

import 'hibák'
import 'fmt'

funkció ellenőrzése ( név karakterlánc ) hiba {
nError := errors.New ( 'Érvénytelen név' )
ha név ! = 'Linux' {
Visszatérés nError
}
Visszatérés nulla
}
func main ( ) {
név := 'Linux'
hiba := ellenőrizze ( név )
ha téved ! = nulla {
fmt.Println ( téved )
} más {
fmt.Println ( 'Érvényes név' )
}
}





A fenti kód a Új() checkName függvényt, hogy megnézze, ha a karakterlánc Linux megegyezik a megadott névvel. A függvény hibát jelez az üzenettel Érvénytelen név ha a név nem Linux . A függvény nullát ad vissza, jelezve, hogy nem történt hiba, ha a név egyenlő Linux .

A névváltozó értéke Linux a fő függvény hívásában a checkName függvényt, amely a névváltozót is argumentumként veszi. A fő funkció kiírja a hibaüzenetet, ha a checkName függvény hibát ad vissza. A fő funkció kiírja a Érvényes név ha a checkName függvény nullát ad vissza.



Kimenet

2: Errorf() függvény

A Errorf() A Go funkció lehetővé teszi a hibák kezelését is. Errorf() lehetőséget ad a hibaüzenet formázására. Az fmt csomag importálásával a fejlesztők felhasználhatják a hibaüzenetek testreszabására az igényeiknek megfelelően. Errorf() leegyszerűsíti és javítja a hibák kezelésének és továbbításának hatékonyságát a Go-ban.

csomag fő
import 'fmt'

func div ( n1, n2 te ) hiba {

ha n2 == 0 {
Visszatérés fmt.Errorf ( '%d / %d \n Egy szám nem osztható nullával' , n1, n2 )
}
Visszatérés nulla
}
func main ( ) {
hiba := div ( 42 , 0 )
ha téved ! = nulla {
fmt.Printf ( 'hiba: %s' , hiba )
} más {
fmt.Println ( 'Érvényes osztály' )
}
}

A fenti kódban a div A függvény két egész bemenetet fogad el, n1 és n2, és ha n2 nulla, akkor hibát produkál. A függvény hibát produkál egy üzenettel, amely n1 és n2 értékeit tartalmazza, ha n2 nulla. A függvény nullát ad vissza, jelezve, hogy nem történt hiba, ha n2 nem nulla.

A div által visszaadott hiba az err változóba kerül mentésre, amikor a fő függvény 42 és 0 értékkel futtatja a div értéket. A fő függvény az fmt.Printf függvényt használja a hibaüzenet megjelenítéséhez, ha a div függvény hibát ad vissza. A fő funkció kinyomtatja Érvényes felosztás ha a div függvény nullát ad vissza.

Kimenet

3: Explicit hibakezelés

A Go explicit hibakezelést ösztönöz más programozási nyelvekhez képest, amelyek gyakran támaszkodnak kivételekre. Ez a megközelítés arra ösztönzi a fejlesztőket, hogy az if utasításokat használják kifejezetten a hibák keresésére, ahelyett, hogy a try-catch blokkokra hagyatkoznának. Ezáltal nagyobb a valószínűsége a hibák megtalálásának és megfelelő kijavításának. Ennek megkönnyítésére a Go biztosítja a ha err != nulla utasítás, amely lehetővé teszi a fejlesztők számára, hogy egy függvény végrehajtása után ellenőrizzék a hibákat, és az eredmény alapján megfelelő lépéseket tegyenek. Az explicit hibakezeléssel a Go strukturáltabb és megbízhatóbb megközelítést kínál a hibakezeléshez.

csomag fő
import 'fmt'

funkcionális felosztás ( a, b float64 ) ( float64, hiba ) {
ha b == 0 {
Visszatérés 0 , fmt.Errorf ( 'nem lehet nullával osztani' )
}
Visszatérés a / b, nulla
}
func main ( ) {
eredmény, err := oszt ( 13 , 3 )
ha téved ! = nulla {
fmt.Printf ( 'Hiba: %v \n ' , hiba )
} más {
fmt.Printf ( 'Eredmény: %f \n ' , eredmény )
}
eredmény, err = osztás ( 23 , 0 )
ha téved ! = nulla {
fmt.Printf ( 'Hiba: %v \n ' , hiba )
} más {
fmt.Printf ( 'Eredmény: %f \n ' , eredmény )
}
}

Ezen az ábrán az osztás függvényt használjuk két érték felosztására. Az eredmény ennek eredménye. Ha a második szám 0, a függvény hibát produkál, külön hibaüzenettel.

A főfüggvényben kétszer hívják meg az osztást: egyszer érvényes bemenettel és egyszer érvénytelen bemenettel. Az, ha hiba! = nulla Az utasítás annak meghatározására szolgál, hogy történt-e hiba az osztási függvény minden egyes használatakor. Hibaüzenet kerül kinyomtatásra, ha előfordul. Ha nem, az eredmény kinyomtatásra kerül.

Kimenet

4: Halasztás, pánikolás és helyreállítás

Golang is biztosítja a elhalasztja utasítás, amely egy függvény végrehajtására szolgál egy program vagy egy adott kódblokk befejezése után. A elhalasztja kifejezést gyakran együtt használják a visszaszerez funkció a futásidejű pánikhibák észlelésére és helyreállítására. Futásidejű pánikhiba esetén a visszaszerez A funkció a hibaállapotból való helyreállításra és a program összeomlásának megakadályozására szolgál. Ez olyan tisztítási feladatoknál hasznos, mint a fájlok bezárása, a hálózati kapcsolatok bezárása vagy az erőforrások felszabadítása. A feladatok elhalasztásával biztosíthatja, hogy hiba esetén is végrehajtásra kerüljenek.

A pánik a program normál végrehajtásának leállítására szolgál, ha váratlan hiba történik, míg visszaszerez a pánik kezelésére és a program végrehajtásának folytatására szolgál.

csomag fő

import 'fmt'

func recoveryFromPanic ( ) {
ha r := vissza ( ) ; r ! = nulla {
fmt.Println ( 'Pánikból felépültem:' , r )
}
}
funkcionális felosztás ( x,y float64 ) úszó64 {
elhalasztja a pánikból való felépülést ( )

ha és == 0 {
pánik ( 'nem lehet nullával osztani' )
}
Visszatérés x / és
}
func main ( ) {
fmt.Println ( feloszt ( 13 , 3 ) )
fmt.Println ( feloszt ( 23 , 0 ) )
}

A fenti kódban az osztás függvény két lebegőpontos érték felosztására szolgál. Az eredmény ennek eredménye. A függvény testreszabott hibaüzenetet ad ki, ha a második szám nulla. A defer utasítás a felépülni a pánikból funkció. A felépülni a pánikból A funkció észleli a pánikot, amely az osztás funkción belül történt, és hibát nyomtat, ha ez megtörtént.

A főfüggvényben kétszer hívják meg az osztást: egyszer érvényes bemenettel és egyszer érvénytelen bemenettel. A fmt.Println A függvény kinyomtatja a függvény kimenetét az osztási függvény minden egyes futtatásakor. A felépülni a pánikból A funkció észleli a pánikot, ha megtörténik, és hibát nyomtat, ha megtörténik.

Kimenet

A hiba észlelése után a program magához tért a pánikból, és tovább futott. A kód azonban pánikba esett, és nem adott vissza értéket a második felosztásra, ezért nullát adott vissza.

5: Csomagolási hiba

A Go egy olyan funkciót is tartalmaz, mint az Hiba a csomagoláskor , amely lehetővé teszi további kontextus hozzáadását a hibaüzenethez. Ez hasznos a problémák rögzítéséhez vagy további részletek megadásához a hibaüzenetekben. Ez úgy érhető el, hogy létrehoz egy hibatípust, amely beágyazza az eredeti hibát és további kontextust.

csomag fő

import 'hibák'
import 'fmt'

func main ( ) {
ha hiba := bár ( ) ; téved ! = nulla {
fmt.Println ( téved )
}
}
funkcionális felosztás ( a, b float64 ) ( float64, hiba ) {
ha b == 0 {
Visszatérés 0 , hibák.Új ( 'osztás nullával' )
}
Visszatérés a / b, nulla
}
func bar ( ) ( hiba hiba ) {
_, err = osztás ( 42 , 0 )
ha téved ! = nulla {
Visszatérés fmt.Errorf ( 'nem sikerült kiszámítani: %w' , hiba )
}
Visszatérés nulla
}

A fenti kódban az osztás függvény kiszámítja két szám arányát ebben a példában, és hibát dob, ha a második érték nulla. A bar függvény meghívja az osztás függvényt, majd becsomagolja a hibát feloszt új hibában tér vissza egy üzenettel, amely tartalmazza az eredeti hibaüzenetet az fmt.Errorf függvény használatával. A bar függvényt a fő függvény hívja meg, amely kiírja a visszaadott hibákat is.

Kimenet

Következtetés

A szoftverfejlesztésnek tartalmaznia kell hibakezelés , és a Golang különféle beépített funkciókkal és módszerekkel rendelkezik ennek kecsesen való megvalósításához. Ezek a mechanizmusok lehetővé teszik a fejlesztők számára a hibák észlelését és helyreállítását, megakadályozzák a programok összeomlását, és informatív hibaüzeneteket küldenek a végfelhasználóknak. E hibakezelési mechanizmusok hatékony használatával a fejlesztők robusztus, megbízható és hatékony szoftveralkalmazásokat hozhatnak létre.