Dies ist eine allgemeine Frage in Software engg. Fehler bei der Verarbeitung auf niedrigem Niveau kann zu viel Code sein. Auf der anderen Seite kann Übergabefehler auf oberster Ebene zu Informationsverlust führen. Was denkst du?Ist es eine gute Idee, Fehler auf Eltern und dann Großeltern zu propagieren?
Antwort
Es hängt alles davon ab, was die Anforderungen sind.
In einigen Fällen möchten Sie die Ausnahme für den Anrufer aufblasen, da der Anrufer möglicherweise besser ausgestattet ist, um das Problem zu behandeln. Das Senden einer E-Mail ist möglicherweise nicht immer systemkritisch, aber es kann sein, wenn Sie jemandem mitteilen müssen, der bei Ihrem Bankkonto angemeldet ist.
Auf der anderen Seite, möchten Sie nicht aufblasen Ausnahmen, die von der aufgerufenen Methode behandelt werden sollten. Wenn Sie etwas schreiben, das eine Datei über FTP herunterladen soll, möchten Sie den Anrufer nicht mit jeder unterbrochenen Verbindung belästigen, wenn Sie es später noch einmal versuchen möchten.
Also wieder, das hängt von der Situation ab, eher als eine Faustregel.
Es hängt wirklich davon ab, wo das Programm den Fehler behandeln kann, melden Sie es in einer nützlichen Weise, und setzen Sie einige nützliche Verarbeitung fort.
In UI-Code habe ich geschrieben, während zum Beispiel ein Ereignis verarbeitet, kann ich eine private Methode aufrufen und dann einige Dienstprogramm-Methode, die einen Fehler auftritt. Es wäre nicht sinnvoll, sie in der Dienstprogrammmethode zu behandeln, da sie das Ereignis, das behandelt wird, und alle Methoden zum Melden des Fehlers an den Benutzer möglicherweise nicht kennen. Die erste Ebene der Ereignisbehandlung ist wahrscheinlich in einer besseren Situation, um damit umzugehen und entweder die Verarbeitung zu stoppen oder die notwendigen Anpassungen vorzunehmen.
Auf der anderen Seite, wenn die Utility-Methode legitim den Fehler für alle Situationen behandeln kann, die es verwendet wird (vielleicht gibt es einige Wiederholungslogik oder Plan B Logik), dann könnte es hier sein.
Aber für viel von dem UI-Code, den ich getan habe, wird es normalerweise zu einem höheren Niveau übergeben, da es in einer besseren Position ist, um es für die spezifische Situation zu behandeln.
- 1. Ist es eine gute Idee, eine Python-Klasse zu hashen?
- 2. Ist es eine gute Idee, NSNumberFormatterBehavior10_4 über NSNumberFormatterBehaviorDefault zu bevorzugen?
- 3. Ist MSMQ eine gute Idee?
- 4. Ist es eine gute Idee, `par.map (` auf großen Listen direkt?
- 5. Ist es eine gute Idee, BootFaces & PrimeFAces zusammen zu verwenden?
- 6. Django: Ist es eine gute Idee, JS dynamisch zu generieren?
- 7. Ist es eine gute Idee, alte Schienen Migrationen zu reduzieren?
- 8. Ist es eine gute Idee, Methoden zu Scala-Fallklassen hinzuzufügen
- 9. Ist es eine gute Idee, statische Klasse AppContext zu verwenden?
- 10. Wann ist es keine gute Idee, durch Referenz zu gehen?
- 11. Ist eine DLL kompatibel zu allen Datenbanken eine gute Idee
- 12. In welchen Fällen ist es eine gute Idee, beim Zugriff auf Instanzvariablen auf self zu verzichten?
- 13. Ist es eine gute Übung, Basiskomponenten zu erstellen und sie dann in React zu erweitern?
- 14. Ist es eine gute Idee, DataContractSerializer-Instanzen zwischenzuspeichern?
- 15. Was ist MongoDBs strikter Modus und ist es eine gute Idee zu verwenden?
- 16. Ist es eine gute Idee, eine schwere Datenbank (Datenspeicher) Aktivität Website eine gute Idee mit gwt + appengine?
- 17. Globale Konstanten in separater Datei. Ist es eine gute Idee?
- 18. Mehrwertige Felder eine gute Idee?
- 19. Ist es eine gute Idee, MySQL und Neo4j zusammen zu verwenden?
- 20. zu mysqli wechseln eine gute Idee?
- 21. Ist eine gute Idee, Couchbase mit Rails zu verwenden?
- 22. Ist es eine gute Idee() auf viele kleine, wiederverwendbare reactjs Komponenten in redux zu verwenden, verbinden
- 23. Gibt es eine Möglichkeit, Mehrfacheinspritzung zu propagieren?
- 24. Ist es eine gute Idee, Java-Prozess zu jenkins binden, so dass es überwacht werden kann?
- 25. Ist es eine gute Idee, für jeden Client in SQL Server eine andere Datenbank zu erstellen?
- 26. Ist es für einen Webentwickler eine gute Idee, eine allgemeine Sprache zu kennen?
- 27. Wann ist es eine gute Idee, einen Zeiger auf eine Struktur zurückzugeben?
- 28. Ist es eine gute Idee, mehrere FKs in einem Feld in MySQL zu haben?
- 29. Ist es eine gute Idee, eine berechnete Spalte als Teil eines Primärschlüssels zu verwenden?
- 30. Ist es eine gute Idee, eine IDE für scala zu entwickeln?
Ich denke, das ist eine gute Frage für http://programmers.stackexchange.com/. –