Бурное обсуждение раста навело меня на мысль, что исключения это действительно очень плохо, т.к. сигнализирует об ошибках в логике.
Однако, в среде C# try/catch/log/throw exc это чуть ли не мантра.
По сути лог это обратная связь между человеком и машиной.
Задача человека свести все сообщения об исключениях к одному из типов ошибки программируемой системы или пофиксить.
Везде торчит голова ФП, return (false, exc) лучше чем throw exc;
логи наше всё.