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
Antwort
UnsupportedOperationException
- am häufigsten und vielseitig ungeprüft Laufzeitausnahme in Java.
http://docs.oracle.com/javase/6/docs/api/java/lang/UnsupportedOperationException.html
Cool! Danke ... das klingt perfekt! – Neel
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);
}
}
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
Bloch sagt in Effective Java 2nd, dass das Erstellen neuer Ausnahmen, wenn es bereits vorhandene gibt, eine schlechte Programmierpraxis ist. – vaxquis
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.
Klingt für meinen Fall etwas ungeeignet, da sich mein Objekt per se nicht in einem * illegalen * Zustand befindet. – Neel
@Neel: Bitte überprüfen Sie meine Bearbeitung. –
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
- 1. Illegale Remote-Methode in Java
- 2. rein virtuelle Methode namens
- 3. PHPUnit Mocks - Assert-Methode namens
- 4. Fabrik Methode namens nur einmal
- 5. "Uncaught Typeerror: Illegale Invocation" in einer JavaScript-Methode
- 6. Ergebnis hat keine Methode namens "unwrap()"?
- 7. Überprüfen generische Methode namens Moq mit
- 8. Wie verfolgen Sie jede Methode namens
- 9. Angular2 Testform: einreichen Methode namens nicht
- 10. ajax Formulardaten: Illegale Aufruf
- 11. Illegale statische Deklaration
- 12. Xml illegale Zeichen Filter
- 13. Fehler C2100 - Illegale Indirection
- 14. bash: Illegale Nummer
- 15. ElasticsearchIllegalArgumentException: Illegale Plugin Name
- 16. ftell (stdin) verursacht illegale Fehler
- 17. Illegale Musterzeichen 'Y' auf Ubuntu
- 18. PHP exif_read_data Illegale IFD-Größe
- 19. Binutils Stat illegale Option -c
- 20. Illegale zyklische Referenz mit Klasse
- 21. Akka-http illegale Anfrage-Header
- 22. ORA-01036; illegale Variablenname/Nummer
- 23. Unreine Methode wird für Nur-Lese-Feld namens
- 24. Meteor Error: Eine Methode namens insert ist bereits definiert
- 25. „rein virtuelle Methode namens“, wenn ein boost :: Thread Wrapper-Schnittstelle
- 26. pdfminer3k hat keine Methode namens create_pages in PDFPage
- 27. Abrufen des Namens der aktuellen Methode in C++
- 28. Reine virtuelle Methode namens Fehler Google Protokoll Puffer
- 29. IDisposable.Dispose() nicht in Release-Modus für Asynchron-Methode namens
- 30. illegale Nutzung von LONG-Datentyp 00997. 00000 - „illegale Nutzung von LONG-Datentyp
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. –
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