Java entspricht .NET System.InvalidOperationException

77

Ich bin mit den Ausnahmepaketen von Java nicht so vertraut wie mit denen von .NET. Ich bin in einer Situation, in der ich beim Programmieren in C # eine werfen würde System.InvalidOperationException.

Bevor ich meine eigene java.lang.RuntimeExceptionUnterklasse erstelle , muss ich wissen, ob es einen ähnlichen Ausnahmetyp gibt, den ich in Java auslösen sollte.

Das genaue Szenario ist:

Meine Klasse ist ein Wertobjekt, das eine int intValue()Methode bereitstellt und ein int zurückgibt. In einigen Situationen kann der aktuelle Wert jedoch nicht als int angegeben werden. Daher bietet diese Klasse auch eine boolean isInteger(), damit API-Benutzer wissen, wann intValue()sie sicher aufgerufen werden können.

Wenn ein Anrufer anruft, intValue()wann isInteger()ist false, sollte eine Ausnahme ausgelöst werden.

Und die Frage ist: Welche Art von Ausnahme?

Ich weiß, dass diese Frage möglicherweise nicht richtig beantwortet wird, aber da ich nicht viel Erfahrung mit dem Entwerfen von Java-APIs habe, möchte ich von anderen Java-Entwicklern wissen, was sie in diesem Szenario erwarten würden.

Vielen Dank

Sergio Acosta
quelle

Antworten:

89

Wirf ein IllegalStateException:

Signalisiert, dass eine Methode zu einem illegalen oder unangemessenen Zeitpunkt aufgerufen wurde. Mit anderen Worten, die Java-Umgebung oder Java-Anwendung befindet sich nicht in einem geeigneten Zustand für die angeforderte Operation.

Jon Skeet
quelle
13
IllegalStateExceptionist definitiv richtig für den speziellen Fall, nach dem gefragt wurde. Beachten Sie, dass es in einigen Situationen meiner Meinung nach angemessener ist, eine zu werfen UnsupportedOperationException. Zum Beispiel, wenn an Iteratordie removeMethode nicht unterstützt .
Csauve