CC>Такое ощущение что у тебя обработка ошибок делается через catch (...) на саааамом верху, ибо в нормальном мире, где failure is an option обрабатывать обычные ошибки исключениями уж очень неудобно.
Ну-ка, ну-ка, поподробнее про "обработку ошибок в нормальном мире". Я каждый раз когда слышу такие утверждения, сразу вспоминаю код новичков на Erlang'е, да и многих других языках, типа такого:
try {
call_something();
} catch (Exception exc)
{
emit_log("call_something failed with ", exc.reason);
return Error(exc);
}
И в функции выше что-то типа
var ret = do_work();
if (ret instanceof Error) {
emit_log("calling do_work failed because of ", ret.exception)
}
Мне при виде такого сразу хочется руки оторвать тем, кто не понимает, что такое "обработка ошибок". Если так уж вышло, что только на самом верху ошибку можно обработать, то именно там и надо ставить catch.