Metoda A wywołuje metodę B, która z kolei wywołuje metodę C.
Nie ma obsługi wyjątków w metodzie B lub metodzie C. Ale istnieje metoda obsługi wyjątków w metodzie A.
W metodzie C występuje wyjątek.
Teraz wyjątek dotyczy metody MethodA, która odpowiednio ją obsługuje.
Co jest z tym nie tak?
Moim zdaniem, w pewnym momencie program wywołujący wykona metodę B lub metodę C, a gdy w tych metodach wystąpią wyjątki, to co zyska się na obsłudze wyjątków w tych metodach, co zasadniczo jest tylko blokiem try / catch / wreszcie zamiast po prostu pozwolić oni bańki do callee?
Oświadczenie lub konsensus dotyczący obsługi wyjątków ma zostać wygenerowany, gdy wykonanie nie może być kontynuowane z tego właśnie powodu - wyjątku. Rozumiem. Ale dlaczego nie złapać wyjątku w dalszej części łańcucha zamiast blokowania try / catch do samego końca.
Rozumiem to, kiedy musisz zwolnić zasoby. To zupełnie inna sprawa.
try-catch
blok nie jest wcale potrzebny .
Result<T>
typ (typ, który przechowuje wynik obliczeń lub błąd) i zwrócić go z innych funkcji rzucania. Propagowanie błędu na stosie wiązałoby się z odczytaniem każdej zwracanej wartości, sprawdzaniem, czy jest to błąd i zwracaniem błędu, jeśli tak jest.