Open DanikVitek opened 1 year ago
Ще варіант: додати оператор, на кшталт ?
, що автоматично перевіряє результат, і, у разі помилки рано виходить з функції, а оператором виду !
розпаковувати результат для швидкого отримання значення:
дія додати_з_умовою(а, б)
якщо а більше 999
Помилка("а має бути не більше 999")
кінець
Ок(а + б)
кінець
результат = додати_з_умовою(1000, 2)! ;; кидає помилку
дія суму_до_квадрату(а, б)
сума = додати_з_умовою(а, б)? ;; у разі помилки поверне її одразу з функції на цьому рядку
Ок(сума * сума)
кінець
Пропозиція
Для обробки помилок використовувати, в основному, значення замість кидання винятків. Кидання винятків не прибирати, бо для швидкого написання коду, або для ситуацій, з яких не відновитися, вони корисні.
Мотивація
Класичне кидання помилок не є надійним, оскільки це є вириванням з потоку керування. Не відомо коли, хто, і чи взагалі відреазує на виняток. Ловити винятки синтаксично не обов'язково, а якби було обов'язково, то код би або виглядав загромаджено і гірше читався, або була би одна точка реагування на помилки, з якої не зрозуміло, без заглиблення у код, джерело самої помилки.
Можливий вигляд реалізації
Наразі, обговорений у телеграм чаті варіант виглядає наступним чином:
Тобто тут суть, що з дії може вернутись
Ок
, абоПомилка
(як всюди). Коли дія викликається, то з неї вертається абоОк
, абоПомилка
. За замовчуванням вертається розгорнутийОк
, але є можливість обробити помилку записавши її в змінну через другий арумент оператора присвоєння.