2012-04-01 6 views
2

Ich habe eine Java-Klasse, die sowohl einwertige als auch mehrwertige Daten verarbeitet. Daher werden zwei Methoden verfügbar gemacht: getValue() und getValues(). Ich möchte jedoch eine Art Ausnahme auslösen, wenn die Methode getValue für mehrwertige Daten aufgerufen wird. Was ist die relevanteste Ausnahmeklasse, die ich verwenden kann? Ich denke, IllegalAccessException ist nicht angemessen, weil ich keine Reflexion oder eine solche Entdeckungstechnik verwende; weder ist IllegalArgumentException geeignet, weil ich keine Argumente als solche passiere.Illegale Methode namens

+2

Sorry, aber etwas riecht mir komisch. Kannst du uns mehr über deine Programmstruktur erzählen und vielleicht sogar Code zeigen? Vielleicht brauchen Sie nur eine Methode und haben einen Parameter, der der Klasse sagt, wie viele Werte zurückgegeben werden sollen. Ich weiß nicht, basierend auf dem was du oben gepostet hast. Und in Bezug auf Ihre Frage ist es manchmal am einfachsten und am besten, dafür eine eigene Exception-Klasse zu erstellen. Aber lassen Sie uns zuerst sehen, ob Sie das wirklich brauchen. –

+0

Der Code ist etwa so: Klasse {private Collection Werte; // gibt einen einzelnen Wert zurück oder gibt die Ausnahme public aus T getValue(); // gibt mehrere Werte oder Einzelwerte zurück, die in einer öffentlichen Sammlung eingepackt sind. public Collection getValues ​​(); } – Neel

Antwort

0

Sie könnten Ihre eigene Ausnahme machen speziell für diese Klasse zu werfen versuchen, in diesem suchen link

Sie so etwas tun könnte:

class getValException extends Exception 
{ 
    public getValException(String message) 
    { 
     super(message); 
    } 
} 
+2

Vielleicht ist das Erstellen einer eigenen Ausnahme möglicherweise keine gute Idee, es sei denn, dies ist absolut notwendig, da die Leute eine neue API lernen müssen, richtig? – Neel

+2

Bloch sagt in Effective Java 2nd, dass das Erstellen neuer Ausnahmen, wenn es bereits vorhandene gibt, eine schlechte Programmierpraxis ist. – vaxquis

6

java.lang.IllegalStateException ist der beste Standard-Ausnahme für diese.

Die JavaDoc sagt:

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

In Ihrem Fall bedeutet das, dass die aufgerufene Methode zu unpassenden Zeiten aufgerufen wurde.

+1

Klingt für meinen Fall etwas ungeeignet, da sich mein Objekt per se nicht in einem * illegalen * Zustand befindet. – Neel

+0

@Neel: Bitte überprüfen Sie meine Bearbeitung. –

+0

Ummm, darf keine unpassende Zeit sein, oder? Aber Tatsache ist, da mein Objekt mehrwertig sein soll, welcher Wert von getValue zurückgegeben werden sollte - das ist unbestimmt (der nullte Wert ist möglicherweise nicht zu erwarten). – Neel

Verwandte Themen