Existe algo como o .NET NotImplementedException
em Java?
Existe algo como o .NET NotImplementedException
em Java?
Respostas:
Commons Lang tem. Ou você pode jogar um UnsupportedOperationException
.
Eu acho java.lang.UnsupportedOperationException
que é o que você está procurando.
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:
public class NotImplementedException extends RuntimeException {
private static final long serialVersionUID = 1L;
public NotImplementedException(){}
}
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 :)
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:
public class NotYetImplementedException extends RuntimeException
{
/**
* @deprecated Deprecated to remind you to implement the corresponding code
* before releasing the software.
*/
@Deprecated
public NotYetImplementedException()
{
}
/**
* @deprecated Deprecated to remind you to implement the corresponding code
* before releasing the software.
*/
@Deprecated
public NotYetImplementedException(String message)
{
super(message);
}
}
Essa abordagem possui os seguintes benefícios:
NotYetImplementedException
, sabem que uma implementação foi planejada e foi esquecida ou ainda está em andamento, enquanto UnsupportedOperationException
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).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.