MethodA chiama un MethodB che a sua volta chiama MethodC.
Non esiste una gestione delle eccezioni in MethodB o MethodC. Ma c'è una gestione delle eccezioni in MethodA.
In MethodC si verifica un'eccezione.
Ora, quell'eccezione sta ribollendo fino a MethodA, che la gestisce in modo appropriato.
Cosa c'è di sbagliato in questo?
Nella mia mente, a un certo punto un chiamante eseguirà MethodB o MethodC, e quando si verificano eccezioni in quei metodi, ciò che si otterrà dalla gestione delle eccezioni all'interno di quei metodi, che essenzialmente è solo un blocco try / catch / finally invece di lasciare semplicemente si gonfiano fino alla chiamata?
L'affermazione o il consenso sulla gestione delle eccezioni è quando l'esecuzione non può continuare proprio per questo - un'eccezione. Capisco quello. Ma perché non catturare l'eccezione più in alto della catena invece di provare / catturare i blocchi fino in fondo.
Lo capisco quando devi liberare risorse. Questa è una questione completamente diversa.
try-catch
blocco.
Result<T>
tipo (un tipo che memorizza un risultato di un calcolo o un errore) e restituirlo dalle tue funzioni di lancio altrimenti. La propagazione di un errore nello stack comporterebbe la lettura di tutti i valori restituiti, il controllo di eventuali errori e la restituzione di un errore in tal caso.