Информация об изменениях

Сообщение Re: Result objects - все-таки победили Exceptions? от 13.01.2025 13:38

Изменено 13.01.2025 13:38 ononim

Re: Result objects - все-таки победили Exceptions?
S>Но, как оказалось, народ идеи не понял. Так и вернулись к понятным дебилоидам кодам возврата, т.к. проверяемые исключения осилить не смогли. Так же и в Kotlin их решили не делать.
Я думаю концепция GetLastError()/errno недооценена
Но ее надо чутка расширить, параметром facility.И API сделать таким:
void SetError(FacilityID facility, ErrorObject error);
ErrorObject *GetError(FacilityID facility, bool reset = false);


Поясню, с классическими кодами ошибок проблем три
— это всего лишь код
— он один на всех
— бойлерплейтный код для их проверок везде подряд

С исключениями эти проблемы решены, но есть другие две
— редкий бойлерплейтный код чтобы их ловить, а если забудут словить — все падает, от чего у джуниоров пригорает и они бегут в раст
— на многих системах они пц тормозные (если используются), но ради справедливости — они почти что zero-overhead если не используются.

Подобные аспектно-ориентированные коды ошибок не имеют ни одной из этих проблем. Я у себя юзал такой подход, очень удобно. Типа пишешь в файл длинную сериализацию чего либо, и в конце просто проверяешь — все ли записи в файл прошли гладко. Удобно.
Re: Result objects - все-таки победили Exceptions?
S>Но, как оказалось, народ идеи не понял. Так и вернулись к понятным дебилоидам кодам возврата, т.к. проверяемые исключения осилить не смогли. Так же и в Kotlin их решили не делать.
Я думаю концепция GetLastError()/errno недооценена
Но ее надо чутка расширить, параметром facility.И API сделать таким:
void SetError(FacilityID facility, ErrorObject error);
ErrorObject *GetError(FacilityID facility, bool reset = false);


Поясню, с классическими кодами ошибок проблем три
— это всего лишь код
— бойлерплейтный код для их проверок везде подряд

С исключениями эти проблемы решены, но есть другие две
— редкий бойлерплейтный код чтобы их ловить, а если забудут словить — все падает, от чего у джуниоров пригорает и они бегут в раст
— на многих системах они пц тормозные (если используются), но ради справедливости — они почти что zero-overhead если не используются.

Подобные аспектно-ориентированные коды ошибок не имеют ни одной из этих проблем. Я у себя юзал такой подход, очень удобно. Типа пишешь в файл длинную сериализацию чего либо, и в конце просто проверяешь — все ли записи в файл прошли гладко. Удобно.