Kurzusok
/
Go
Go
/
Feladatok
/
Hibakezelés
Hibakezelés

Hibakezelés

Közepes

Utasítások

Valósítsd meg a hibakezelés és az erőforrás-kezelés különféle formáit.

A programozás egyik fontos pontja, hogy miként kezeljük a hibákat, és hogyan zárjuk le az erőforrásokat akkor is, ha hibák lépnek fel.

Ez a feladat megkívánja, hogy különféle hibákat kezelj. Mivel a hibakezelés meglehetősen programozási nyelvfüggő, a kurzod tesztjeiben kell utánanézned, hogy pontosan mire van szükség.

Megvalósítás

Ha még új vagy a Go hibakezelésében és a panic mechanizmusában, érdemes először elolvasnod a témákról szóló dokumentációt, hogy legyen kontextusod.

Ebben a feladatban egy Use(opener ResourceOpener, input string) error függvényt kell definiálnod, amely megnyit egy erőforrást, meghívja az eredményül kapott erőforráson a Frob(input) függvényt, majd bezárja azt az erőforrást (minden esetben). A függvényednek helyesen kell kezelnie a hibákat és a panic helyzeteket.

A ResourceOpener opener egy olyan függvény lesz, amelyet közvetlenül meghívhatsz opener() formában, hogy megpróbáld „megnyitni” az erőforrást. A Go szokásos módján ad vissza egy Resource értéket és egy hibaértéket:

A Resource, ResourceOpener, FrobError és TransientError definícióit a common.go fájlban találod. A megoldásodat ugyanabba a csomagba kell írnod, mint a common.go és az error_handling_test.go fájlt: „erratum”. Így ezek a típusok elérhetők lesznek a megoldásodban.

A Use függvényedben néhány helyen hiba fordulhat elő:

  • Amikor meghívod a Use első paramétereként átadott ResourceOpener függvényt, az meghiúsulhat egy TransientError típusú hibával. Ha ez történik, próbálkozz tovább az erőforrás megnyitásával. Ha másféle hiba, add vissza a Use függvényedből.

  • Amikor meghívod a Frob függvényt a ResourceOpener függvény által visszaadott Resource-on, az panic-et dobhat egy FrobError-ral (vagy más típusú hibával). Ha valóban FrobError-ról van szó, meg kell hívnod a Resource Defrob függvényét, a panic során kapott FrobError .defrobTag változóját használva a Defrob függvény bemeneteként. Mindkét esetben a Use-nak vissza kell adnia a hibát.

  • Azt is jegyezd meg: ha a Resource sikeresen megnyílt, ügyelj rá, hogy bármi történik is, pontosan egyszer meghívd a Close függvényét (még akkor is, ha hibák történtek).

A konkrét hibatípusok vizsgálatát típus-állításokkal végezheted el. Érdemes lehet megnézned a nevesített visszatérési értékeket is, amelyek hasznos módot kínálnak arra, hogy a panic utáni helyreállítás során visszaadd a hibainformációkat.

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Go Exercism

Készen állsz elkezdeni a(z) Hibakezelés feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Go nyelvet 34 fogalom165 feladat segítségével, valódi emberi mentorálással, mindez ingyen.