C'è qualcosa come .NET NotImplementedException
in Java?
C'è qualcosa come .NET NotImplementedException
in Java?
Risposte:
Commons Lang ce l' ha. Oppure potresti lanciare un UnsupportedOperationException
.
Penso che java.lang.UnsupportedOperationException
sia quello che stai cercando.
new UnsupportedOperationException("Not implemented yet")
- felice?
Potresti farlo da solo (questo è quello che ho fatto) - per non essere disturbato dalla gestione delle eccezioni, estendi semplicemente RuntimeException, la tua classe potrebbe assomigliare a questa:
public class NotImplementedException extends RuntimeException {
private static final long serialVersionUID = 1L;
public NotImplementedException(){}
}
Potresti estenderlo per accettare un messaggio, ma se usi il metodo come faccio io (ovvero, come promemoria, c'è ancora qualcosa da implementare), di solito non sono necessari messaggi aggiuntivi.
Oserei dire che uso solo questo metodo, mentre sono in procinto di sviluppare un sistema, mi rende più facile non perdere traccia di quali metodi non sono ancora implementati correttamente :)
UnsupportedOperationException
secondo me. Ora, se solo Java lo aggiungesse alla libreria comune di eccezioni!
Come accennato, il JDK non ha una corrispondenza ravvicinata. Tuttavia, il mio team occasionalmente ha un vantaggio anche per tale eccezione. Avremmo potuto procedere UnsupportedOperationException
come suggerito da altre risposte, ma preferiamo una classe di eccezioni personalizzata nella nostra libreria di base che ha deprecato i costruttori:
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);
}
}
Questo approccio ha i seguenti vantaggi:
NotYetImplementedException
, sanno che un'implementazione è stata pianificata ed è stata dimenticata o è ancora in corso, mentre UnsupportedOperationException
dice (in linea con i contratti di raccolta ) che qualcosa non verrà mai implementato. Ecco perché abbiamo la parola "ancora" nel nome della classe. Inoltre, un IDE può elencare facilmente i siti di chiamata.import
riga (JDK 9 ha risolto questo problema , tuttavia).No non c'è e probabilmente non c'è, perché ci sono pochissimi usi validi per questo. Ci penserei due volte prima di usarlo. Inoltre, è davvero facile creare te stesso.
Fare riferimento a questa discussione sul perché si trova anche in .NET.
suppongo UnsupportedOperationException
si avvicini, anche se non dice che l'operazione non sia stata implementata, ma nemmeno supportata. Ciò potrebbe implicare che non sia possibile un'implementazione valida. Perché l'operazione non sarebbe supportata? Dovrebbe essere anche lì? Problemi di segregazione dell'interfaccia o di sostituzione di Liskov forse?
Se si tratta di lavori in corso, sceglierei ToBeImplementedException
, ma non mi sono mai sorpreso a definire un metodo concreto e poi lasciarlo così a lungo da renderlo in produzione e sarebbe necessaria una tale eccezione.