Als subjektive Frage sollte dies geschlossen werden, aber da es noch offen ist:
Dies ist Teil der internen Politik, die an meinem früheren Arbeitsplatz angewendet wurde, und hat sehr gut funktioniert. Dies ist alles aus dem Gedächtnis, so dass ich mich nicht an den genauen Wortlaut erinnern kann. Es ist erwähnenswert, dass sie keine geprüften Ausnahmen verwendet haben, aber das geht über den Rahmen der Frage hinaus. Die ungeprüften Ausnahmen, die sie verwendeten, fielen in drei Hauptkategorien.
NullPointerException: Nicht absichtlich werfen. NPEs dürfen nur von der VM ausgelöst werden, wenn eine Nullreferenz dereferenziert wird. Es sind alle möglichen Anstrengungen zu unternehmen, um sicherzustellen, dass diese niemals geworfen werden. @Nullable und @NotNull sollten in Verbindung mit Code-Analyse-Tools verwendet werden, um diese Fehler zu finden.
IllegalArgumentException: Wird ausgelöst, wenn ein Argument für eine Funktion nicht mit der öffentlichen Dokumentation übereinstimmt, sodass der Fehler anhand der übergebenen Argumente identifiziert und beschrieben werden kann. Die Situation des OP würde in diese Kategorie fallen.
IllegalStateException: Wird ausgelöst, wenn eine Funktion aufgerufen wird und ihre Argumente zum Zeitpunkt der Übergabe entweder unerwartet sind oder nicht mit dem Status des Objekts kompatibel sind, zu dem die Methode gehört.
Beispielsweise gab es zwei interne Versionen der IndexOutOfBoundsException, die in Dingen mit einer Länge verwendet wurden. Eine Unterklasse von IllegalStateException, die verwendet wird, wenn der Index größer als die Länge war. Die andere ist eine Unterklasse von IllegalArgumentException, die verwendet wird, wenn der Index negativ war. Dies lag daran, dass Sie dem Objekt weitere Elemente hinzufügen konnten und das Argument gültig war, während eine negative Zahl niemals gültig ist.
Wie gesagt, dieses System funktioniert wirklich gut, und es hat jemanden gebraucht, um zu erklären, warum der Unterschied besteht: "Abhängig von der Art des Fehlers ist es für Sie recht einfach, herauszufinden, was zu tun ist. Auch wenn Sie nicht wirklich herausfinden können Wenn Sie herausfinden, was schief gelaufen ist, können Sie herausfinden, wo Sie diesen Fehler abfangen und zusätzliche Debugging-Informationen erstellen können. "
NullPointerException: Behandeln Sie den Null-Fall oder geben Sie eine Zusicherung ein, damit die NPE nicht ausgelöst wird. Wenn Sie eine Behauptung aufstellen, ist dies nur einer der beiden anderen Typen. Wenn möglich, fahren Sie mit dem Debuggen fort, als ob die Behauptung überhaupt vorhanden wäre.
IllegalArgumentException: An Ihrer Anrufstelle stimmt etwas nicht. Wenn die übergebenen Werte von einer anderen Funktion stammen, finden Sie heraus, warum Sie einen falschen Wert erhalten. Wenn Sie eines Ihrer Argumente übergeben, überprüft der Fehler den Aufrufstapel, bis Sie die Funktion finden, die nicht das zurückgibt, was Sie erwarten.
IllegalStateException: Sie haben Ihre Funktionen nicht in der richtigen Reihenfolge aufgerufen. Wenn Sie eines Ihrer Argumente verwenden, überprüfen Sie diese und lösen Sie eine IllegalArgumentException aus, die das Problem beschreibt. Sie können dann die Wangen gegen den Stapel ausbreiten, bis Sie das Problem finden.
Sein Punkt war jedenfalls, dass Sie nur die IllegalArgumentAssertions auf den Stapel kopieren können. Es gibt keine Möglichkeit für Sie, die IllegalStateExceptions oder NullPointerExceptions im Stack weiterzugeben, da sie etwas mit Ihrer Funktion zu tun haben.