Es scheint, dass NotImplementedException aus Commons Lang 3.0 entfernt wurde.
Michael Younkin
13
Ich denke, da die UnsupportedOperationException Teil des Sammlungsframeworks ist, sollte sie nur verwendet werden, wenn sie im Kontext von Sammlungen verwendet wird. Andernfalls sollte eine RuntimeException verwendet werden. docs.oracle.com/javase/7/docs/technotes/guides/collections/…
Ich sage, es ist etwas ganz anderes. Die NIE sagt auch, dass es möglicherweise noch nicht implementiert ist, wo die UOE mir sagt, dass es niemals wird ...
Dykam
5
@Dykam, wäre es dann nicht eine NotImplementedYetException?
Yishai
106
@ Dykam: new UnsupportedOperationException("Not implemented yet")- glücklich?
Michael Borgwardt
3
Ich meinte nicht, dass es schlimmer war, hatte nur einen anderen Anwendungsfall.
Dykam
6
Die neue UnsupportedOperationException ("Noch nicht implementiert") ist eine großartige Idee! :) in lang3 aus irgendeinem Grund habe ich keine NotImplementedException, also ist dies eine großartige Lösung
ufk
55
Sie können es selbst tun (das habe ich getan) - um sich nicht mit der Ausnahmebehandlung zu beschäftigen, erweitern Sie einfach die RuntimeException, Ihre Klasse könnte ungefähr so aussehen:
Sie können es erweitern, um eine Nachricht aufzunehmen. Wenn Sie die Methode jedoch wie ich verwenden (dh als Erinnerung daran, dass noch etwas implementiert werden muss), sind normalerweise keine zusätzlichen Nachrichten erforderlich.
Ich wage zu sagen, dass ich diese Methode nur verwende, während ich gerade ein System entwickle, was es mir leichter macht, nicht den Überblick zu verlieren, welche Methoden noch nicht richtig implementiert sind :)
Diese Lösung gefällt mir am besten, weil es einfach ist, einen speziellen Fehlerbehandler dafür zu haben, einfach danach zu suchen, indem alle Verweise auf den NotImplementedException-Konstruktor gefunden werden, und es sind nur ein paar Codezeilen. Es ist jedoch etwas unpraktisch, eine neue Klasse mit einer eigenen Datei deklarieren zu müssen.
D Coetzee
1
Genau. Dies ist UnsupportedOperationExceptionmeiner Meinung nach besser als die Verwendung von . Wenn nur Java dies zur allgemeinen Bibliothek von Ausnahmen hinzufügen würde!
Crush
12
Wie bereits erwähnt, hat das JDK keine enge Übereinstimmung. Mein Team hat jedoch gelegentlich auch eine Verwendung für eine solche Ausnahme. Wir hätten mitmachen können, UnsupportedOperationExceptionwie in anderen Antworten vorgeschlagen, aber wir bevorzugen eine benutzerdefinierte Ausnahmeklasse in unserer Basisbibliothek, die veraltete Konstruktoren enthält:
publicclassNotYetImplementedExceptionextendsRuntimeException{/**
* @deprecated Deprecated to remind you to implement the corresponding code
* before releasing the software.
*/@DeprecatedpublicNotYetImplementedException(){}/**
* @deprecated Deprecated to remind you to implement the corresponding code
* before releasing the software.
*/@DeprecatedpublicNotYetImplementedException(String message){super(message);}}
Dieser Ansatz hat folgende Vorteile:
Wenn die Leser sehen NotYetImplementedException, wissen sie, dass eine Implementierung geplant war und entweder vergessen wurde oder noch in Bearbeitung ist, während dies UnsupportedOperationException(im Einklang mit den Inkassoverträgen) gilt ) dass etwas niemals implementiert wird. Deshalb haben wir das Wort "noch" im Klassennamen. Eine IDE kann auch die Anrufstellen leicht auflisten.
Mit der Verfallswarnung an jedem Anrufstandort können Sie mit Ihrem IDE- und statischen Code-Analysetool daran erinnert werden, wo Sie noch etwas implementieren müssen. (Diese Verwendung der Abschreibung mag sich für einige falsch anfühlen, aber in der Tat ist die Abschreibung nicht auf die Ankündigung der Entfernung beschränkt .)
Die Konstruktoren sind veraltet, nicht die Klasse. Auf diese Weise erhalten Sie nur eine Abwertungswarnung innerhalb der zu implementierenden Methode, nicht an der importZeile (JDK 9 hat dies jedoch behoben ).
Nein, gibt es nicht und es ist wahrscheinlich nicht da, weil es nur sehr wenige gültige Verwendungen dafür gibt. Ich würde zweimal überlegen, bevor ich es benutze. Auch ist es in der Tat einfach, sich selbst zu erstellen.
ich vermute UnsupportedOperationException kommt nahe, obwohl es nicht heißt, dass die Operation einfach nicht implementiert ist, aber sogar nicht unterstützt wird. Dies könnte bedeuten, dass keine gültige Implementierung möglich ist. Warum wird die Operation nicht unterstützt? Sollte es überhaupt da sein? Probleme mit der Schnittstellentrennung oder der Liskov-Substitution vielleicht?
Wenn es in Arbeit ist, würde ich mich dafür entscheiden ToBeImplementedException, aber ich habe mich nie dabei ertappt, eine konkrete Methode zu definieren und sie dann so lange zu belassen, bis sie in Produktion geht, und es wäre eine solche Ausnahme erforderlich.
Ich denke, das
java.lang.UnsupportedOperationException
ist was du suchst.quelle
new UnsupportedOperationException("Not implemented yet")
- glücklich?Sie können es selbst tun (das habe ich getan) - um sich nicht mit der Ausnahmebehandlung zu beschäftigen, erweitern Sie einfach die RuntimeException, Ihre Klasse könnte ungefähr so aussehen:
Sie können es erweitern, um eine Nachricht aufzunehmen. Wenn Sie die Methode jedoch wie ich verwenden (dh als Erinnerung daran, dass noch etwas implementiert werden muss), sind normalerweise keine zusätzlichen Nachrichten erforderlich.
Ich wage zu sagen, dass ich diese Methode nur verwende, während ich gerade ein System entwickle, was es mir leichter macht, nicht den Überblick zu verlieren, welche Methoden noch nicht richtig implementiert sind :)
quelle
UnsupportedOperationException
meiner Meinung nach besser als die Verwendung von . Wenn nur Java dies zur allgemeinen Bibliothek von Ausnahmen hinzufügen würde!Wie bereits erwähnt, hat das JDK keine enge Übereinstimmung. Mein Team hat jedoch gelegentlich auch eine Verwendung für eine solche Ausnahme. Wir hätten mitmachen können,
UnsupportedOperationException
wie in anderen Antworten vorgeschlagen, aber wir bevorzugen eine benutzerdefinierte Ausnahmeklasse in unserer Basisbibliothek, die veraltete Konstruktoren enthält:Dieser Ansatz hat folgende Vorteile:
NotYetImplementedException
, wissen sie, dass eine Implementierung geplant war und entweder vergessen wurde oder noch in Bearbeitung ist, während diesUnsupportedOperationException
(im Einklang mit den Inkassoverträgen) gilt ) dass etwas niemals implementiert wird. Deshalb haben wir das Wort "noch" im Klassennamen. Eine IDE kann auch die Anrufstellen leicht auflisten.import
Zeile (JDK 9 hat dies jedoch behoben ).quelle
Nein, gibt es nicht und es ist wahrscheinlich nicht da, weil es nur sehr wenige gültige Verwendungen dafür gibt. Ich würde zweimal überlegen, bevor ich es benutze. Auch ist es in der Tat einfach, sich selbst zu erstellen.
In dieser Diskussion erfahren Sie, warum es überhaupt in .NET ist.
ich vermute
UnsupportedOperationException
kommt nahe, obwohl es nicht heißt, dass die Operation einfach nicht implementiert ist, aber sogar nicht unterstützt wird. Dies könnte bedeuten, dass keine gültige Implementierung möglich ist. Warum wird die Operation nicht unterstützt? Sollte es überhaupt da sein? Probleme mit der Schnittstellentrennung oder der Liskov-Substitution vielleicht?Wenn es in Arbeit ist, würde ich mich dafür entscheiden
ToBeImplementedException
, aber ich habe mich nie dabei ertappt, eine konkrete Methode zu definieren und sie dann so lange zu belassen, bis sie in Produktion geht, und es wäre eine solche Ausnahme erforderlich.quelle