MethodA ruft eine MethodB auf, die wiederum MethodC aufruft.
In MethodB oder MethodC gibt es KEINE Ausnahmebehandlung. In MethodA gibt es jedoch eine Ausnahmebehandlung.
In MethodC tritt eine Ausnahme auf.
Jetzt sprudelt diese Ausnahme zu MethodA, die sie entsprechend behandelt.
Was ist daran falsch?
Meiner Meinung nach wird ein Aufrufer irgendwann MethodB oder MethodC ausführen, und wenn in diesen Methoden Ausnahmen auftreten, was sich aus der Behandlung von Ausnahmen in diesen Methoden ergibt, die im Wesentlichen nur ein try / catch / finally-Block statt nur let sind sie sprudeln bis zum angerufenen?
Die Aussage oder der Konsens in Bezug auf die Ausnahmebehandlung lautet, dass ausgelöst werden muss, wenn die Ausführung aus diesem Grund nicht fortgesetzt werden kann - eine Ausnahme. Ich verstehe das. Aber warum nicht die Ausnahme weiter oben in der Kette abfangen, anstatt Try / Catch-Blöcke ganz unten zu haben?
Ich verstehe es, wenn Sie Ressourcen freisetzen müssen. Das ist eine ganz andere Sache.
try-catch
Block erforderlich .
Result<T>
Typ implementieren (einen Typ, der entweder ein Ergebnis einer Berechnung oder einen Fehler speichert) und ihn von Ihren ansonsten auslösenden Funktionen zurückgeben. Das Übertragen eines Fehlers auf den Stapel würde das Lesen jedes Rückgabewerts, das Überprüfen, ob es sich um einen Fehler handelt, und das Zurückgeben eines Fehlers erfordern, wenn dies der Fall ist.