Beispielsweise können viele Methoden in Frameworks / JDK ausgelöst werden
java.lang.SecurityException
Dies wird jedoch nicht in der Methodensignatur angegeben (da dies normalerweise für geprüfte Ausnahmen reserviert ist). Ich möchte argumentieren, dass das Deklarieren von RuntimeExceptions in Methodensigs viele Vorteile hat (ähnlich wie beispielsweise die statische Typprüfung). Bin ich betrunken oder anders?
quelle
Aus dem Oracle Java-Tutorial :
quelle
Schauen Sie sich das Javadoc für Collection # add an
Es gibt eine ganze Reihe von ungeprüften Ausnahmen:
Wenn Sie die Geduld haben, würde ich empfehlen, die möglichen Ausnahmen, die Ihre Methoden auf diese Weise auslösen, gründlich zu dokumentieren. In gewisser Weise ist es sogar noch wichtiger, dies für ungeprüfte Ausnahmen zu tun, da geprüfte Ausnahmen sich selbst dokumentieren (der Compiler zwingt den aufrufenden Code, sie zu bestätigen).
quelle
throws
in der Methodensignatur. Das ist nicht dasselbe. Ja, Sie sollten unbedingt alle von Ihrer API ausgelösten Ausnahmen dokumentieren, aber die Frage bezieht sich nicht darauf.Aus meiner Sicht ist es besser, Laufzeitausnahmen zumindest im Javadoc für die Methode zu deklarieren. Wenn Sie es in der Signatur deklarieren, wird noch deutlicher, was passieren kann, wenn etwas schief geht. Dies ist mein Hauptgrund für den Vorschlag, diese Informationen bereitzustellen.
Zu Ihrer Information: Mit der Zeit (jetzt im Jahr 2017) neige ich jetzt viel mehr dazu, sie nur in Javadoc zu dokumentieren und überprüfte Ausnahmen so weit wie möglich zu vermeiden.
quelle
Meiner Ansicht nach sollten ungeprüfte Ausnahmen niemals in der Methodensignatur deklariert werden, da dies ihrer Natur widerspricht.
Wenn eine Methode jedoch wahrscheinlich einige ungeprüfte Ausnahmen auslöst, die die wahrscheinlichen Umstände in @throws in Javadoc notieren, kann dies für andere hilfreich sein, die die Methode aufrufen, um zu verstehen, was schief gehen kann. Dies ist jedoch nur für Ausnahmen nützlich, die die Anrufer wahrscheinlich verarbeiten können (z. B. eine NPE aufgrund schlechter Eingaben usw.).
quelle
Wenn Sie eine API zur Verwendung durch andere schreiben, gibt es genügend Gründe für eine explizite Dokumentation Ihrer Absicht in der API, und es gibt keinen Nachteil, RuntimeExceptions in der Methodensignatur zu deklarieren.
quelle
Dies hat mit der Diskussion über geprüfte Ausnahmen zu tun . Die meisten würden zustimmen, dass Ausnahmen nicht in Methodensignaturen deklariert werden sollten.
Es gibt auch eine Diskussion darüber, wie Laufzeitausnahmen verwendet werden sollten. Ich stimme einem Poster zu, dass Laufzeitausnahmen einen Programmierfehler oder einen schwerwiegenden Zustand anzeigen sollten. Es gibt also nicht viel Verdienst, sie in der Unterschrift zu deklarieren. Jede Methode könnte möglicherweise durch eine.
quelle