Wygląda na to, że NotImplementedException został usunięty z Commons Lang 3.0.
Michael Younkin
13
Myślę, że ponieważ UnsupportedOperationException jest częścią frameworku kolekcji, należy go używać tylko wtedy, gdy jest używany w kontekście kolekcji. W przeciwnym razie należy zastosować wyjątek RuntimeException. docs.oracle.com/javase/7/docs/technotes/guides/collections/…
Mówię, że to coś zupełnie innego. NIE mówi również, że może jeszcze nie zostać zaimplementowany, gdzie UOE mówi mi, że nigdy nie będzie ...
Dykam
5
@Dykam, to czy nie byłby to NotImplementedYetException?
Yishai
106
@Dykam: new UnsupportedOperationException("Not implemented yet")- szczęśliwy?
Michael Borgwardt
3
Nie miałem na myśli, że było gorzej, po prostu miałem inny przypadek użycia.
Dykam
6
nowy UnsupportedOperationException („Jeszcze nie zaimplementowano”) to świetny pomysł! :) z lang3 z jakiegoś powodu nie mam NotImplementedException, więc jest to świetne rozwiązanie
ufk
55
Możesz to zrobić sam (właśnie to zrobiłem) - aby nie przejmować się obsługą wyjątków, wystarczy rozszerzyć RuntimeException, twoja klasa mogłaby wyglądać mniej więcej tak:
Możesz go rozszerzyć, aby odebrał komunikat - ale jeśli użyjesz metody tak jak ja (to znaczy, że dla przypomnienia jest jeszcze coś do zaimplementowania), wtedy zwykle nie ma potrzeby dostarczania dodatkowych komunikatów.
Śmiem twierdzić, że używam tylko tej metody, a ja jestem w trakcie opracowywania systemu, dzięki czemu łatwiej mi nie zgodzić się z tym, które metody są nadal nieprawidłowo wdrażane :)
Najbardziej podoba mi się to rozwiązanie, ponieważ łatwo jest mieć do niego specjalną procedurę obsługi błędów, łatwo go wyszukać, znajdując wszystkie odwołania do konstruktora NotImplementedException, a to tylko kilka wierszy kodu. Ale nieco niewygodne jest zadeklarowanie nowej klasy z własnym plikiem.
D Coetzee
1
Zgadzam się. To jest lepsze niż użycie UnsupportedOperationExceptionmoim zdaniem. Teraz, gdyby tylko Java dodała to do wspólnej biblioteki wyjątków!
zmiażdżyć
12
Jak wspomniano, JDK nie ma ścisłego dopasowania. Jednak mój zespół czasami korzysta również z takiego wyjątku. Moglibyśmy pójść UnsupportedOperationExceptionzgodnie z sugestiami innych odpowiedzi, ale wolimy niestandardową klasę wyjątków w naszej bibliotece podstawowej, która wycofała konstruktorów:
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);}}
Podejście to ma następujące zalety:
Kiedy czytelnicy widzą NotYetImplementedException, wiedzą, że wdrożenie zostało zaplanowane i zostało zapomniane lub wciąż trwa, podczas gdy UnsupportedOperationExceptionmówi (zgodnie z umowami windykacyjnymi ), że coś nigdy nie zostanie wdrożone. Dlatego w nazwie klasy mamy słowo „jeszcze”. IDE może również łatwo wyświetlać strony z połączeniami.
Dzięki ostrzeżeniu o wycofaniu w każdej witrynie połączenia Twoje IDE i narzędzie do analizy kodu statycznego może przypomnieć Ci, gdzie nadal musisz coś zaimplementować. (To użycie wycofania może być dla niektórych niewłaściwe, ale w rzeczywistości wycofanie nie ogranicza się do ogłoszenia usunięcia .)
Konstruktory są przestarzałe, a nie klasa. W ten sposób otrzymujesz tylko ostrzeżenie o wycofaniu w metodzie, która wymaga implementacji, a nie na importlinii (JDK 9 to naprawił ).
Nie, nie ma go i prawdopodobnie go nie ma, ponieważ jest bardzo mało ważnych zastosowań. Myślałem dwa razy przed użyciem. Ponadto, naprawdę jest łatwo stworzyć siebie.
Zapoznaj się z tą dyskusją, dlaczego jest nawet w .NET.
Chyba się UnsupportedOperationExceptionzbliża, chociaż nie oznacza to, że operacja po prostu nie została zaimplementowana, ale nawet nie jest obsługiwana. Może to oznaczać, że nie jest możliwa poprawna implementacja. Dlaczego operacja nie byłaby obsługiwana? Czy powinno tam być? Może segregacja interfejsu lub podstawienie Liskowa?
Jeśli chodzi o prace w toku, wybrałbym ToBeImplementedException, ale nigdy nie przyłapałem się na definiowaniu konkretnej metody, a potem pozostawiłem ją na tak długo, aby znalazła się w produkcji i byłby potrzebny taki wyjątek.
Myślę, że tego
java.lang.UnsupportedOperationException
właśnie szukasz.źródło
new UnsupportedOperationException("Not implemented yet")
- szczęśliwy?Możesz to zrobić sam (właśnie to zrobiłem) - aby nie przejmować się obsługą wyjątków, wystarczy rozszerzyć RuntimeException, twoja klasa mogłaby wyglądać mniej więcej tak:
Możesz go rozszerzyć, aby odebrał komunikat - ale jeśli użyjesz metody tak jak ja (to znaczy, że dla przypomnienia jest jeszcze coś do zaimplementowania), wtedy zwykle nie ma potrzeby dostarczania dodatkowych komunikatów.
Śmiem twierdzić, że używam tylko tej metody, a ja jestem w trakcie opracowywania systemu, dzięki czemu łatwiej mi nie zgodzić się z tym, które metody są nadal nieprawidłowo wdrażane :)
źródło
UnsupportedOperationException
moim zdaniem. Teraz, gdyby tylko Java dodała to do wspólnej biblioteki wyjątków!Jak wspomniano, JDK nie ma ścisłego dopasowania. Jednak mój zespół czasami korzysta również z takiego wyjątku. Moglibyśmy pójść
UnsupportedOperationException
zgodnie z sugestiami innych odpowiedzi, ale wolimy niestandardową klasę wyjątków w naszej bibliotece podstawowej, która wycofała konstruktorów:Podejście to ma następujące zalety:
NotYetImplementedException
, wiedzą, że wdrożenie zostało zaplanowane i zostało zapomniane lub wciąż trwa, podczas gdyUnsupportedOperationException
mówi (zgodnie z umowami windykacyjnymi ), że coś nigdy nie zostanie wdrożone. Dlatego w nazwie klasy mamy słowo „jeszcze”. IDE może również łatwo wyświetlać strony z połączeniami.import
linii (JDK 9 to naprawił ).źródło
Nie, nie ma go i prawdopodobnie go nie ma, ponieważ jest bardzo mało ważnych zastosowań. Myślałem dwa razy przed użyciem. Ponadto, naprawdę jest łatwo stworzyć siebie.
Zapoznaj się z tą dyskusją, dlaczego jest nawet w .NET.
Chyba się
UnsupportedOperationException
zbliża, chociaż nie oznacza to, że operacja po prostu nie została zaimplementowana, ale nawet nie jest obsługiwana. Może to oznaczać, że nie jest możliwa poprawna implementacja. Dlaczego operacja nie byłaby obsługiwana? Czy powinno tam być? Może segregacja interfejsu lub podstawienie Liskowa?Jeśli chodzi o prace w toku, wybrałbym
ToBeImplementedException
, ale nigdy nie przyłapałem się na definiowaniu konkretnej metody, a potem pozostawiłem ją na tak długo, aby znalazła się w produkcji i byłby potrzebny taki wyjątek.źródło