идея состоит в том, что исключения могут возникнуть везде. поэтому весь код должен быть написан так, чтобы исключения через него проехали и пошли дальше по стёку
по моему опыту, быть уверенным в отсутствии исключений можно только в чисто вычислительном коде типа алгоритмов сжатия. даже обычное выделение памяти - уже опасность
> поэтому весь код должен быть написан так, чтобы исключения через него проехали и пошли дальше по стёку
Т.е. надо каждый раз когда вызываешь функцию в коде задумываться "а что если она кинет эксепшн?". Это точно проще чем посмотреть на сигнатуру и увидеть Result<T, E> там или просто T?
наверно я рассматриваю исключения скорее как панику. там где они перехватываются, должен быть достаточно высокий барьер через который назад передаётся минимум данных
Вот это как раз подход раста. Для нормальных ошибок используется Result, для "ой, всё совсем плохо" - паника и размотка стека. Ловится оно уже очень высоко по стеку обычно.
в Go можно перехватить панику и дальше работать как ни в чём не бывало. если такое есть в раст - то считай в нём есть exception handling как в любом другом языке
Все-таки есть разница между паникой и exception'ами, хоть технически это одно и то же. Первое используется только в крайних случаях, а второе - при любой ошибке. В том же го для обычных ошибок возвращают error, а не паникуют сразу.