Re[12]: обработка ошибок
От: MadHuman Россия  
Дата: 09.04.22 09:22
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:


MH>>вместо свитча — будет try/catch. я бы сказал примерно одно и тоже.

НС>Не будет там никакого try..catch, в этом суть. Просто вешается единожды написанная простенькая мидлвера. А вот твой Result придется явно протаскивать по всему коллстеку, загаживая код.
тогда мы вернёмся к исходной проблеме. вот мидлвара словила исключение (даже наше спец исключение типа WrongAccountException), если под мидлварей вызов функции вида Transfer (из которой напрямую это исключение и возвращается),
то да — всё хорошо, возвращаем 400, т.к. номер счета передан снаружи неверно. но исключение может подняться по колстэку и из глубин бизнес-логики, и на вызывающей стороне (хандлере под мидлаварей) и не было речи ни о каком счете.
а когда у нас в частном случае появится новое исключение — снова идти править общую мидлвару?


НС>Еще раз — единственная фича исключений, ради которой их придумали — возможность абсолютно независимо от любого коллстека прервать выполнение и вернуть ошибку. И все это происходит абсолютно прозрачно для любого кода между источником и конечным обработчиком.

да, всё так.

НС>А вот вариант с возвращаемыми кодами ошибок откатывает нас во времена до исключений, когда любой код приходилось специально под обработку ошибок затачивать.

этот вариант надо использовать когда в конкретном случае он имеет преимущества перед кэтчем исключения. если его всегда использовать/злоупотреблять, то конечно мы получим как в Go и всё то о чем ты говориш (не надо так).
Отредактировано 09.04.2022 9:23 MadHuman . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.