Existe-t-il quelque chose comme .NET NotImplementedException
en Java?
Existe-t-il quelque chose comme .NET NotImplementedException
en Java?
Réponses:
Commons Lang l' a. Ou vous pouvez lancer un UnsupportedOperationException
.
Je pense que java.lang.UnsupportedOperationException
c'est ce que vous recherchez.
new UnsupportedOperationException("Not implemented yet")
- heureux?
Vous pouvez le faire vous-même (c'est ce que j'ai fait) - afin de ne pas être dérangé par la gestion des exceptions, vous étendez simplement la RuntimeException, votre classe pourrait ressembler à ceci:
public class NotImplementedException extends RuntimeException {
private static final long serialVersionUID = 1L;
public NotImplementedException(){}
}
Vous pouvez l'étendre pour prendre un message - mais si vous utilisez la méthode comme je le fais (c'est-à-dire, pour rappel, qu'il y a encore quelque chose à implémenter), alors généralement il n'y a pas besoin de messages supplémentaires.
J'ose dire que je n'utilise que cette méthode, alors que je suis en train de développer un système, il est plus facile pour moi de ne pas perdre de vue quelles méthodes ne sont toujours pas implémentées correctement :)
UnsupportedOperationException
à mon avis. Maintenant, si seulement Java ajoutait cela à la bibliothèque commune d'exceptions!
Comme mentionné, le JDK n'a pas de correspondance étroite. Cependant, mon équipe peut aussi parfois utiliser une telle exception. Nous aurions pu y aller UnsupportedOperationException
comme suggéré par d'autres réponses, mais nous préférons une classe d'exception personnalisée dans notre bibliothèque de base qui a déprécié les constructeurs:
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);
}
}
Cette approche présente les avantages suivants:
NotYetImplementedException
, ils savent qu'une mise en œuvre a été planifiée et a été oubliée ou est toujours en cours, alors que UnsupportedOperationException
dit (conformément aux contrats de collecte ) que quelque chose ne sera jamais mis en œuvre. C'est pourquoi nous avons le mot "encore" dans le nom de la classe. En outre, un IDE peut facilement répertorier les sites d'appels.import
ligne (cependant, JDK 9 a corrigé cela ).Non, il n'y en a pas et ce n'est probablement pas là, car il y a très peu d'utilisations valides pour cela. J'y réfléchirais à deux fois avant de l'utiliser. De plus, il est en effet facile de se créer soi-même.
Veuillez vous référer à cette discussion pour savoir pourquoi il est même dans .NET.
j'imagine UnsupportedOperationException
se rapproche, même si cela ne dit pas que l'opération n'est tout simplement pas implémentée, mais non prise en charge même. Cela pourrait impliquer qu'aucune implémentation valide n'est possible. Pourquoi l'opération ne serait-elle pas prise en charge? Doit-il même être là? Problèmes de ségrégation d'interface ou de substitution Liskov peut-être?
Si c'est un travail en cours, je choisirais ToBeImplementedException
, mais je ne me suis jamais surpris à définir une méthode concrète, puis à la laisser si longtemps qu'elle est mise en production et il faudrait une telle exception.