Стендап Сьогодні

📢 Канал в Telegram @stendap_sogodni

10.08.2022

🐞🔍😅 Сьогодні довелося багато попрацювати з помилками виконання на мові Go. Go - мова з яскраво вираженою авторською думкою. Отже і обробка помилок в Go зроблена цікавим і авторським чином. Ось декілька фактів про неї:

- Майже кожна нетривіальна функція повертає не тільки результат, а й помилку (мабуть, саме для цього в Go функції можуть повертати декілька значень)
- Очікується, що безпосередньо після виклику кожної такої функції буде перевірка та обробка помилки (хоча можна і проігнорувати - є лінтери, які це забороняють)
- При цьому помилки в Go мінімально типізовані. Зазвичай помилку не треба роздивлятись, а просто час перервати запланований алгоритм. (Звісно, є випадки, в яких можна перевірити, що це саме за помилка, і якось особливо відреагувати.)
- На практиці це призводить до того, що кожний написаний алгоритм враховує всі можливості помилки, а це вельми цінно.
- Є ще один різновид помилки - паніка. За механізмом, паніка є виключенням, як у інших мовах. Але за змістом вона значить, що це програміст накосячив, і вихід тепер один - виправити код. Наприклад, паніку викличе звертання до нульового покажчика. (Легкий спосіб її схопити - ігнорувати помилки.)
- Неперехоплена паніка в будь-якій з паралельних рутин призводить до повного краху програми. Настільки все серйозно.

Цю систему я то ненавиджу, то люблю. Адже вона привчає до того, що помилки виконання - неминучий аспект життя, і готуватись до них потрібно завжди.