Dein Code liest sich so, als würdest du Teil 1 tun (und auflösen, wenn du IOException
abfangen willst), den Teil ohne Ausnahmen machen und dann den methodThatMayThrowCustomException
. Ihr Code kann buchstäblich nicht anders geschrieben werden und behält die gleiche Funktionalität. Das ist eine Übertreibung, aber jede andere Version wäre oberflächlich anders.
Dies ist nicht gleich:
%Vor%und die Art, wie es ausgeführt würde, wenn eine der Exceptions ausgelöst wird, ist ganz anders. Wenn Sie nacheinander von Teil 1 wiederherstellen müssen, schlagen Sie Teil 2 auf jeden Fall vor, und fahren Sie dann mit Teil 3 fort. Sie können Ihren Code nicht wirklich anders schreiben.
Es ist nichts falsch daran, zwei catch-Blöcke zu haben, obwohl das Mischen von etwas, das eine IOException verursacht, mit etwas, das eine CustomException auslöst, eine Vermischung von Bedenken nahelegt, wodurch Ihr Code schwer zu verstehen ist. Aber so wie es ist, ist es nicht nur gültig, es ist der einzige Weg, um das zu tun, was du tust.
Wenn die Methode die Ausführung ohne Probleme fortsetzen kann, selbst wenn die angegebene Ausnahme auftritt, sollte dies in Ordnung sein.
In dem Fall, in dem die Exception in der Methode weiter unten Probleme verursachen sollte, würde ich sie aufblasen.
Nein, ist es nicht. Es ist ein guter Punkt, um bestimmte Ausnahmen zu fangen, wenn sie geworfen werden, imho ist es sicherlich besser als das:
%Vor%Es hängt wirklich davon ab, was Sie vorhaben, wenn eine IOException ausgelöst wird. Dein Stil erlaubt dir, mehr Dinge zu tun, aber wenn du nicht vorhast, das auszunutzen, dann wird diese Absicht durch Verwendung des Standard-Idioms viel deutlicher.
%Vor%Hier können Sie schnell sagen, dass wenn IOException ausgelöst wird, Sie nur tun, was innerhalb des catch-Blocks ist und nicht viel mehr.
Es gibt kein Problem damit, AFAICS. Allerdings ersticht mir in einer Methode 2 Versuch-Fang in meinen Augen. Wenn Sie das gleiche Gefühl haben, schlage ich vor, dass Sie es richtig umgestalten.
Nein. Das ist eine ziemlich gute Übung, um den Bereich einzuschränken, in dem einige Ausnahmen ausgelöst werden. Ich habe das in meinem Code sehr oft gemacht.
Wenn Sie jedoch sicher sind, dass in einem try ... catch-Block eine bestimmte Art von Exception nur durch eine eindeutige Funktion ausgelöst wird, ist es auch OK, sie in den gleichen try-Block zu setzen.
Nun, es kommt darauf an, was Sie erreichen wollen. Normalerweise würde ein Codeblock in einen einzelnen try-catch-Block eingeschlossen, wenn der Codeblock als Block oder gar nicht ausgeführt werden soll, wenn eine Ausnahme auftritt. Wenn es nicht der Fall ist, dann glaube ich, dass es viel besser ist, die verschiedenen Codeblöcke zu isolieren, die verschiedene Ausnahmen in verschiedene try-catch-Blöcke werfen, die "mehr Sachen hier machen, die keine Ausnahme werfen". nur ein Gedanke!
Tags und Links java exception coding-style