2010-08-01 13 views
63

Ich bin nicht so vertraut mit Java-Ausnahme-Pakete als mit denen von .NET. Ich bin in einer Situation, in der, wenn ich in C# programmieren würde, ich System.InvalidOperationException werfen würde.Java entspricht .NET System.InvalidOperationException

Bevor ich meine eigene Unterklasse java.lang.RuntimeException erstelle, muss ich wissen, ob es einen ähnlichen Ausnahmetyp gibt, den ich in Java einwerfen sollte.

Das genaue Szenario ist:

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

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

Und die Frage ist: Welche Art von Ausnahme?

Ich weiß, dass diese Frage nicht eine richtige Antwort haben könnte, aber wenn man bedenkt, dass ich nicht viel Erfahrung in der Entwicklung von Java-APIs, die ich von anderen Java-Entwickler wissen wollen, was sie erwarten würde, in diese geworfen werden Szenario.

dank

+0

möglich Duplikat [Gibt es einen Java-Äquivalent von C# 's InvalidOperationException?] (Http://stackoverflow.com/questions/3165701/is-there-a-java-equivalent-of-cs-invalidoperationexception) – Carl

Antwort

72

Wurf eines IllegalStateException:

Signale, die ein Verfahren bei einer Unerlaubten Zeit aufgerufen wurde. Mit anderen Worten, die Java-Umgebung oder Java-Anwendung ist nicht in einem entsprechenden Zustand für die angeforderte Operation.

+9

' IllegalStateException' ist definitiv richtig für den spezifischen Fall, zu dem gefragt wurde. Beachten Sie, dass es in manchen Situationen meiner Ansicht nach sinnvoller ist, eine "UnsupportedOperationException" auszulösen. Zum Beispiel, wenn ein 'Iterator' die' remove' Methode nicht unterstützt. – csauve