Реалізуйте різні види обробки помилок і керування ресурсами.
У програмуванні важливо вміти обробляти помилки та закривати ресурси, навіть якщо вони виникають.
У цій вправі потрібно обробити різні помилки. Оскільки обробка помилок досить специфічна для конкретної мови програмування, потрібно звернутися до тестів своєї мови, щоб побачити, що саме вимагається.
Якщо ми щойно починаємо працювати з помилками та паніками в Go, радимо спершу прочитати документацію з цих тем, щоб мати контекст.
У цій вправі потрібно буде визначити функцію Use(opener ResourceOpener, input string) error, яка відкриває ресурс, викликає Frob(input) для отриманого ресурсу, а потім закриває цей ресурс (у всіх випадках). Наша функція має належно обробляти помилки та паніки.
ResourceOpener opener буде функцією, яку можна викликати напряму, opener(), щоб спробувати «відкрити» ресурс. Вона повертає Resource та значення помилки у звичний для Go спосіб:
Визначення Resource, ResourceOpener, FrobError і TransientError дивіться у файлі common.go. Наше рішення має бути в тому самому пакеті, що й common.go та error_handling_test.go: «erratum». Так ці типи будуть доступні для використання в нашому рішенні.
У нашій функції Use буде кілька місць, де можуть виникати помилки:
Виклик функції ResourceOpener, переданої в Use першим параметром, може завершитися помилкою типу TransientError; у такому разі продовжуйте намагатися відкрити ресурс.
Якщо це якась інша помилка, поверніть її з функції Use.
Виклик функції Frob для Resource, поверненого функцією ResourceOpener, може панікувати з FrobError (або з помилкою іншого типу).
Якщо це справді FrobError, доведеться викликати функцію Defrob цього ресурсу, використавши змінну .defrobTag паніки FrobError як вхідні дані для функції Defrob.
У будь-якому разі Use має повернути цю помилку.
Також зауважте: якщо Resource вдалося відкрити, обовʼязково викличте його функцію Close рівно один раз, хоч би що сталося (навіть якщо виникли помилки).
Перевіряти конкретні типи помилок можна за допомогою тверджень типу. Також, можливо, нам варто поглянути на іменовані повернені значення як на зручний спосіб повернути інформацію про помилку після відновлення з паніки.
Зареєструйтеся на Exercism, щоб вивчати й опановувати Go, а також 34 концепції165 вправ та справжнє наставництво від людей, і все це безкоштовно.