MethodA викликає MethodB, який, в свою чергу, викликає MethodC.
У методіB або MethodC немає обробляння винятків. Але в MethodA є обробка винятків.
У MethodC відбувається виняток.
Тепер цей виняток перекидається до MethodA, який обробляє його належним чином.
Що з цим не так?
На мою думку, в якийсь момент абонент виконує MethodB або MethodC, і коли в цих методах трапляються винятки, що буде отримано від обробки виключень усередині цих методів, що по суті є просто блоком спробувати / зловити / нарешті замість просто дозволити вони пузиряться до мозолі?
Твердження або консенсус навколо обробки винятків - це викид, коли виконання не може продовжуватися через просто - виняток. Я це розумію. Але чому б не зловити виняток далі вгору по ланцюжку, а не намагатися / ловити блоки повністю донизу.
Я розумію це, коли потрібно звільнити ресурси. Це зовсім інша справа.
try-catch
блок взагалі не потребує .
Result<T>
тип (тип, який або зберігає результат обчислення, або помилку), і повернути його зі своїх функцій, що кидаються в іншому випадку. Поширення помилки в стеку спричинить за собою зчитування кожного поверненого значення, перевірку його помилки та повернення помилки, якщо так.