И если говорить конкретно о монадах, на сколько я понимаю, исключения реализуют подобный механизм. Грубо говоря, вся плюсовая программа написана в do нотации. А самописные монады в плюсах не удобно использовать.
Разница между do-нотацией и исключениями в том, что потенциальные точки выхода в do-нотации вполне явные, а исключение может вылететь чуть ли не из каждого слова в коде функции
Исключения — это как тысячи вложенных ифов, навскидку нельзя сказать, где, какое и каким путём может вылететь, только в отличии от ифов, ты ещё и не видишь всю картину целиком