MethodA вызывает MethodB, который, в свою очередь, вызывает MethodC.
Нет обработки исключений в MethodB или MethodC. Но в MethodA есть обработка исключений.
В MethodC происходит исключение.
Теперь это исключение всплывает в методе А, который обрабатывает его соответствующим образом.
Что не так с этим?
На мой взгляд, в какой-то момент вызывающая сторона выполнит MethodB или MethodC, и когда в этих методах произойдут исключения, что будет получено от обработки исключений внутри этих методов, которая по сути является просто блоком try / catch / finally, а не просто они пузырились до звонящего?
Оператор или консенсус в отношении обработки исключений - это выброс, когда выполнение не может быть продолжено только из-за этого - исключение. Я понимаю. Но почему бы не поймать исключение дальше вверх по цепочке, вместо того, чтобы блоки try / catch полностью опустились вниз.
Я понимаю, когда вам нужно освободить ресурсы. Это совсем другое дело.
try-catch
блок вообще не нужен .
Result<T>
тип (тип, который либо хранит результат вычисления, либо ошибку) и возвращать его из ваших иначе бросающих функций. Распространение ошибки вверх по стеку повлечет за собой чтение каждого возвращаемого значения, проверку, является ли оно ошибкой, и возврат ошибки, если это так.