Parece que NotImplementedException foi removido do Commons Lang 3.0.
Michael Younkin
13
Eu acho que desde que o UnsupportedOperationException faz parte da estrutura de coleções, ele só deve ser usado se for usado no contexto de coleções. Caso contrário, uma RuntimeException deve ser usada. docs.oracle.com/javase/7/docs/technotes/guides/collections/…
Eu digo que é algo bem diferente. O NIE também diz que ainda não pode implementado, onde o UOE me ele nunca vai diz ...
dykam
5
@ Tykam, então não seria uma NotImplementedYetException?
Yishai
106
@Dykam: new UnsupportedOperationException("Not implemented yet")- feliz?
Michael Borgwardt
3
Não quis dizer que era pior, só tinha um caso de uso diferente.
dykam
6
O novo UnsupportedOperationException ("Ainda não implementado") é uma excelente ideia! :) no lang3 por algum motivo eu não tenho NotImplementedException por isso esta é uma grande solução
ufk
55
Você pode fazer isso sozinho (foi o que eu fiz) - para não se incomodar com o tratamento de exceções, você simplesmente estende o RuntimeException, sua classe pode se parecer com isso:
Você pode estendê-lo para receber uma mensagem - mas se você usar o método como eu (ou seja, como um lembrete de que ainda há algo a ser implementado), geralmente não haverá necessidade de mensagens adicionais.
Ouso dizer que só uso esse método, enquanto estou no processo de desenvolvimento de um sistema, para que não perca a noção de quais métodos ainda não foram implementados adequadamente :)
Eu gosto mais dessa solução porque é fácil ter um manipulador de erros especial, é fácil procurá-la encontrando todas as referências ao construtor NotImplementedException, e são apenas algumas linhas de código. Mas é um pouco inconveniente ter que declarar uma nova classe com seu próprio arquivo.
D Coetzee
1
Concordo. Isso é melhor do que o uso UnsupportedOperationExceptionna minha opinião. Agora, se apenas Java adicionasse isso à biblioteca comum de exceções!
esmagar
12
Como mencionado, o JDK não possui uma correspondência próxima. No entanto, minha equipe ocasionalmente também usa essa exceção. Poderíamos ter seguido UnsupportedOperationExceptionas sugestões de outras respostas, mas preferimos uma classe de exceção personalizada em nossa biblioteca base que descontinuou os construtores:
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);}}
Essa abordagem possui os seguintes benefícios:
Quando os leitores veem NotYetImplementedException, sabem que uma implementação foi planejada e foi esquecida ou ainda está em andamento, enquanto UnsupportedOperationExceptiondiz (de acordo com os contratos de coleta ) que algo nunca será implementado. É por isso que temos a palavra "ainda" no nome da classe. Além disso, um IDE pode facilmente listar os sites de chamada.
Com o aviso de descontinuação em cada site de chamada, seu IDE e a ferramenta de análise de código estático podem lembrá-lo de onde você ainda precisa implementar alguma coisa. (Esse uso de depreciação pode parecer errado para alguns, mas, na verdade, a depreciação não se limita a anunciar a remoção .)
Os construtores estão obsoletos, não a classe. Dessa forma, você recebe apenas um aviso de reprovação no método que precisa ser implementado, não na importlinha (o JDK 9 corrigiu isso , no entanto).
Não, não existe e provavelmente não existe, porque existem muito poucos usos válidos para isso. Eu pensaria duas vezes antes de usá-lo. Além disso, é realmente fácil se criar.
Por favor, consulte esta discussão sobre por que está no .NET.
Eu acho que UnsupportedOperationExceptionchega perto, embora não diga que a operação simplesmente não foi implementada, mas sem suporte mesmo. Isso poderia implicar que nenhuma implementação válida é possível. Por que a operação não é suportada? Deveria mesmo estar lá? Problemas de segregação de interface ou substituição de Liskov, talvez?
Se for um trabalho em andamento, eu gostaria ToBeImplementedException, mas nunca me peguei definindo um método concreto e depois o deixo por tanto tempo que ele entra em produção e seria necessária uma exceção.
Eu acho
java.lang.UnsupportedOperationException
que é o que você está procurando.fonte
new UnsupportedOperationException("Not implemented yet")
- feliz?Você pode fazer isso sozinho (foi o que eu fiz) - para não se incomodar com o tratamento de exceções, você simplesmente estende o RuntimeException, sua classe pode se parecer com isso:
Você pode estendê-lo para receber uma mensagem - mas se você usar o método como eu (ou seja, como um lembrete de que ainda há algo a ser implementado), geralmente não haverá necessidade de mensagens adicionais.
Ouso dizer que só uso esse método, enquanto estou no processo de desenvolvimento de um sistema, para que não perca a noção de quais métodos ainda não foram implementados adequadamente :)
fonte
UnsupportedOperationException
na minha opinião. Agora, se apenas Java adicionasse isso à biblioteca comum de exceções!Como mencionado, o JDK não possui uma correspondência próxima. No entanto, minha equipe ocasionalmente também usa essa exceção. Poderíamos ter seguido
UnsupportedOperationException
as sugestões de outras respostas, mas preferimos uma classe de exceção personalizada em nossa biblioteca base que descontinuou os construtores:Essa abordagem possui os seguintes benefícios:
NotYetImplementedException
, sabem que uma implementação foi planejada e foi esquecida ou ainda está em andamento, enquantoUnsupportedOperationException
diz (de acordo com os contratos de coleta ) que algo nunca será implementado. É por isso que temos a palavra "ainda" no nome da classe. Além disso, um IDE pode facilmente listar os sites de chamada.import
linha (o JDK 9 corrigiu isso , no entanto).fonte
Não, não existe e provavelmente não existe, porque existem muito poucos usos válidos para isso. Eu pensaria duas vezes antes de usá-lo. Além disso, é realmente fácil se criar.
Por favor, consulte esta discussão sobre por que está no .NET.
Eu acho que
UnsupportedOperationException
chega perto, embora não diga que a operação simplesmente não foi implementada, mas sem suporte mesmo. Isso poderia implicar que nenhuma implementação válida é possível. Por que a operação não é suportada? Deveria mesmo estar lá? Problemas de segregação de interface ou substituição de Liskov, talvez?Se for um trabalho em andamento, eu gostaria
ToBeImplementedException
, mas nunca me peguei definindo um método concreto e depois o deixo por tanto tempo que ele entra em produção e seria necessária uma exceção.fonte