É apropriado usar quando uma classe não implementa um método, mas classes filho podem fazê-lo? Em outras palavras, ter um método abstrato em uma classe não abstrata.
Osa
@SergeyOrshanskiy É útil quando, dependendo de como você constrói um objeto, você precisa criar uma classe anônima que implemente uma interface para instanciar uma variável de membro, mas não deseja que ela seja usada. Se você defini-lo nulle usá-lo acidentalmente (ou alguém o fez), obteria NullPointerExceptionsmenos óbvio do que UnsupportedOperationExceptionsneste caso. Apenas um exemplo.
@JarrodRoberson OK, essa instrução realmente deve ser removida da documentação da classe nesse caso. A exceção parece ser usada por outros pacotes. Eu acho que se a Oracle faz isso, então deveríamos. Vou registrar um relatório de bug.
Maarten Bodewes
1
Esteja ciente de que esta é uma opção desmarcadaRuntimeException . Você não receberá feedback ou assistência para lidar com essas exceções durante o tempo de compilação. Se isso for usado para um método stubbed ou um trabalho em andamento, você deverá usar algum tipo de exceção verificada .
TastyWheat
221
Diferencie os dois casos que você nomeou:
Para indicar que a operação solicitada não é suportada e provavelmente nunca será, ative um UnsupportedOperationException.
Para indicar que a operação solicitada ainda não foi implementada, escolha entre:
Eu vou com isso, porque me parece razoável. "Ainda" ou "nunca" indicado pela Exceção dá uma idéia de como reagir a isso.
Sschrass #
3
Os nºs 1 ou 2 são muito preferíveis na prática. O nº 3 captura a distinção semântica entre "não suportado" e "não implementado", mas ter uma classe separada facilita a pesquisa rápida para verificar se você não esqueceu de implementar o que deveria antes de confirmar.
Sean U #
4
O nº 3 é melhor para métodos não implementados, pois não requer uma biblioteca de terceiros ou trabalho adicional, mesmo que seja comum.
18718 JoshDM
28
Se você criar uma nova função (ainda não implementada) no NetBeans , ela gerará um corpo de método com a seguinte instrução:
null
e usá-lo acidentalmente (ou alguém o fez), obteriaNullPointerExceptions
menos óbvio do queUnsupportedOperationExceptions
neste caso. Apenas um exemplo.Respostas:
java.lang.UnsupportedOperationException
fonte
RuntimeException
. Você não receberá feedback ou assistência para lidar com essas exceções durante o tempo de compilação. Se isso for usado para um método stubbed ou um trabalho em andamento, você deverá usar algum tipo de exceção verificada .Diferencie os dois casos que você nomeou:
Para indicar que a operação solicitada não é suportada e provavelmente nunca será, ative um
UnsupportedOperationException
.Para indicar que a operação solicitada ainda não foi implementada, escolha entre:
Utilizar a
NotImplementedException
partir apache commons-lang que estava disponível no commons-LANG2 e foi re-adicionado ao commons-lang3 na versão 3.2.Implemente o seu próprio
NotImplementedException
.Jogue um
UnsupportedOperationException
com uma mensagem como "Ainda não implementado".fonte
Se você criar uma nova função (ainda não implementada) no NetBeans , ela gerará um corpo de método com a seguinte instrução:
Portanto, eu recomendo usar o UnsupportedOperationException .
fonte
Se você quiser mais granularidade e melhor descrição, poderá usar NotImplementedException de commons-lang
Aviso: Disponível apenas nas versões 2.6 e posteriores à 3.2.
fonte