Einspruch gegen geprüfte Ausnahme
Seit Jahren bekomme ich keine vernünftige Antwort auf die Frage: Warum sind manche Entwickler so dagegen? überprüft anormal? Ich habe mehrere Gespräche geführt, Blogbeiträge gelesen und Bruce Eckels Sichtweise gelesen (er ist der erste Mensch, den ich je gesehen habe, der sich dagegen ausgesprochen hat).
Ich schreibe gerade neuen Code und achte sehr darauf, wie ich mit Ausnahmen umgehe. Ich versuche, die Meinung der Leute zu verstehen, die sagen: „Wir mögen keine geprüften Ausnahmen“, aber ich kann sie immer noch nicht verstehen.
Jedes Gespräch, das ich geführt habe, endete mit der gleichen Frage ohne Antwort ... Lassen Sie mich Folgendes einrichten:
Im Allgemeinen (durch das Design von Java)
Eine Aussage, die ich oft höre, ist, dass der Entwickler beim Auftreten einer Ausnahme nur das Programm beenden kann.
Ein weiteres häufiges Argument, das ich höre, ist, dass geprüfte Ausnahmen die Umgestaltung von Code erschweren.
Was das „Ich habe einfach aufgehört“-Argument angeht, möchte ich damit sagen, dass Sie selbst dann, wenn Sie aufhören, eine vernünftige Fehlermeldung anzeigen müssen. Wenn Sie die Behandlung von Fehlern einfach vermeiden, werden Ihre Benutzer nicht allzu glücklich sein, wenn das Programm ohne klare Angabe des Grundes beendet wird.
Für die „Es macht Refactoring schwierig“-Leute deutet dies darauf hin, dass nicht die geeignete Abstraktionsebene gewählt wurde. Anstatt zu deklarieren, dass eine Methode eine IOException auslöst, sollte die IOException in eine Ausnahme umgewandelt werden, die für das Geschehen besser geeignet ist.
Ich habe kein Problem damit, Main mit „catch(Exception)“ (oder in einigen Fällen „catch(Throwable)“) zu umschließen, um sicherzustellen, dass das Programm ordnungsgemäß beendet wird – aber ich fange immer die spezifische Ausnahme ab, die ich abfangen muss. Auf diese Weise tun Sie es zumindest Erlauben Sie mir, eine richtige Fehlermeldung anzuzeigen
Die Frage, die die Leute nie beantworten, ist diese:
Wenn Sie stattdessen eine RuntimeException
-Unterklasse auslösen Ausnahme
, woher wissen Sie also
was Sie abfangen sollten?
Ich würde sagen, dass das Programm, das den Stack-Trace anzeigt, falsch ist. Denken das nicht Leute, die keine geprüften Ausnahmen mögen?
Wenn Sie also keine geprüften Ausnahmen mögen, können Sie erklären, warum? Und diese unbeantwortete Frage beantworten?
Ich suche nicht nach Ratschlägen zur Verwendung eines der beiden Modelle, sondern nach den Gründen, warum Leute von RuntimeException statt von Exception aus erweitern und warum sie die Ausnahme abfangen und dann erneut auslösen eins, anstatt ihren Methoden einen RuntimeException-Wurf hinzuzufügen. Ich würde gerne die Motivation dafür verstehen, dass geprüfte Ausnahmen nicht gefallen.
Das obige ist der detaillierte Inhalt vonWarum lehnen einige Entwickler geprüfte Ausnahmen in Java ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!