Ich fühle mich verpflichtet, eine weitere Antwort hinzuzufügen, obwohl die Antwort von Mike Wheat die Hauptpunkte ziemlich gut zusammenfasst. Ich denke so darüber nach. Wenn Sie Methoden haben, die mehrere Dinge tun, multiplizieren Sie die Komplexität, nicht addieren sie.
Anders ausgedrückt, eine Methode, die in einem Try-Catch-Block eingewickelt ist, hat zwei mögliche Ergebnisse. Sie haben das nicht-Exception-Ergebnis und das Exception-Ergebnis. Wenn Sie es mit vielen Methoden zu tun haben, explodiert dies exponentiell über das Verständnis hinaus.
Exponentiell, weil wenn jede Methode sich in zwei verschiedene Richtungen verzweigt, werden jedes Mal, wenn Sie eine weitere Methode aufrufen, die vorherige Anzahl der potenziellen Ergebnisse quadriert. Bis Sie fünf Methoden aufgerufen haben, sind Sie auf mindestens 256 mögliche Ergebnisse angewachsen. Vergleichen Sie dies mit dem nicht Verwenden eines Try/Catch in jeder einzelnen Methode und Sie haben nur einen Pfad zu verfolgen.
So in etwa sehe ich das. Man könnte versucht sein zu argumentieren, dass jede Art von Verzweigung dasselbe tut, aber Try/Catches sind ein besonderer Fall, weil der Zustand der Anwendung im Grunde genommen undefiniert wird.
Kurz gesagt, machen Try/Catches den Code viel schwerer verständlich.