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.
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.
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.