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