Frage

  

Mögliche Duplizieren:
   in Java, wann soll ich eine geprüfte Ausnahme erstellen, und wann sollte es eine Laufzeitausnahme sein?

Wann sollte ich eine Ausnahme von RuntimeException statt Exception ableiten?

Ein RuntimeException muss nicht in einer Methode throws Klausel deklariert werden, die sein gut , da sie nicht speziell aufgeführt haben oder schlecht , weil es explizit gute Praxis ist eine Methode, die Ausnahme zu erklären.

Die Gedanken?

War es hilfreich?

Lösung

Ungeprüfter Ausnahmen - die Kontroverse :

  

Wenn ein Client zu erwarten ist,   um von einer Ausnahme zu erholen, macht es   eine geprüfte Ausnahme. Wenn ein Client   kann nichts tun, von der sich zu erholen   Ausnahme macht es zu einem ungeprüften   Ausnahme.

Beachten Sie, dass eine ungeprüfte Ausnahme eines von RuntimeException und eine geprüfte Ausnahme eines stammt von Exception .

Warum ein RuntimeException werfen, wenn ein Kunde nichts von der Ausnahme erholen kann? Der Artikel erklärt:

  

Runtime Ausnahmen darstellen Probleme   das ist das Ergebnis eines Programmier   Problem, und als solche, die API-Client   Code kann vernünftigerweise nicht zu erwarten   erholen sich von ihnen oder sie behandeln in   wie auch immer. Solche Probleme sind   arithmetische Ausnahmen, wie zum Beispiel   Dividieren durch Null; Zeiger Ausnahmen,   wie versucht, auf ein Objekt zuzugreifen   durch eine Nullreferenz; und Indizierung   Ausnahmen, wie Sie versuchen,   Zugriff auf ein Array-Element durch ein   Index, die zu groß oder zu klein ist.

Andere Tipps

Es gibt viele Szenarien in Unternehmen Anwendungsentwicklung, wo Sie Runtime statt Exception verwenden würden. Im Folgenden sind zwei solche Szenarien, die sehr verbreitet sind:

  • Während Ausnahmebehandlung als ein Aspekt der Umsetzung (Trennung der Sorge Konstruktionsprinzip), in den meisten modernen Frameworks würden Sie Griff Ausnahmen und Associate spezifische Ausnahme deklarative Hantierungsbausteinen anstatt zu gleich. Ein gutes Beispiel hierfür ist JDBC-Vorlage im Frühjahr, dass Konvertiten, die alle SQL Ausnahmen von Runtime so Entwickler doesnot Schreib Try-Catch-Blöcke während der Datenzugriffslogik writting. Sie können Exception-Handler deklarativ definieren, das unterschiedliche Verhalten in dev env zur Verfügung stellen kann. und unterschiedliches Verhalten in der Produktion. Ähnliche Implementierung ist es in Struts Action-1.x-Klasse auch, wo die Methode execute Exception zu werfen deklariert wird, und es gibt getrennte Exception für den Umgang mit bestimmten Ausnahmen in Verstrebungen-config abgebildet. Obwohl dies nicht Beispiel Runtime aber das Konstruktionsprinzip ist dasselbe die Sorge der normalen Ausführung und die Ausnahmebehandlung zu trennen.
  • Eine weitere Verwendung von Runtime ist in EJB und anderen Transaktionsmanager, wo in den Transaktionen sind Controller per Container. In einem solchen Behälter durch Konvention werfen, wenn Sie Runtime aus dem Code würde ein Rollback der Transaktion - das gleiche passieren würde, nicht, wenn Sie eine Ausnahme auslösen
  • .

Dies sind zwei bedeutende Szenarien, die sofort zu meinem Sinn kommen, aber es würde andere Szenarien-Kurs sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top