¿Hay algo como .NET NotImplementedException
en Java?
¿Hay algo como .NET NotImplementedException
en Java?
Respuestas:
Commons Lang lo tiene. O podrías lanzar un UnsupportedOperationException
.
Creo que java.lang.UnsupportedOperationException
es lo que estás buscando.
new UnsupportedOperationException("Not implemented yet")
¿feliz?
Puede hacerlo usted mismo (eso es lo que hice): para no molestarse con el manejo de excepciones, simplemente extienda RuntimeException, su clase podría verse así:
public class NotImplementedException extends RuntimeException {
private static final long serialVersionUID = 1L;
public NotImplementedException(){}
}
Puede extenderlo para tomar un mensaje, pero si usa el método como lo hago yo (es decir, como recordatorio, que todavía hay algo que implementar), entonces generalmente no hay necesidad de mensajes adicionales.
Me atrevo a decir que solo uso este método, mientras estoy en el proceso de desarrollo de un sistema, me hace más fácil no perder de vista qué métodos todavía no se implementan correctamente :)
UnsupportedOperationException
en mi opinión. ¡Ahora, si Java añadiera esto a la biblioteca común de excepciones!
Como se mencionó, el JDK no tiene una coincidencia cercana. Sin embargo, mi equipo ocasionalmente tiene un uso para tal excepción también. Podríamos haber ido UnsupportedOperationException
según lo sugerido por otras respuestas, pero preferimos una clase de excepción personalizada en nuestra biblioteca base que ha desaprobado constructores:
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);
}
}
Este enfoque tiene los siguientes beneficios:
NotYetImplementedException
, saben que se planificó una implementación y se olvidó o aún está en progreso, mientras que UnsupportedOperationException
dice (en línea con los contratos de cobro ) que algo nunca se implementará. Es por eso que tenemos la palabra "todavía" en el nombre de la clase. Además, un IDE puede enumerar fácilmente los sitios de llamadas.import
línea (JDK 9 solucionó esto , sin embargo).No, no lo hay y probablemente no esté allí, porque tiene muy pocos usos válidos. Lo pensaría dos veces antes de usarlo. Además, es realmente fácil crearse.
Consulte esta discusión sobre por qué está incluso en .NET.
Supongo que UnsupportedOperationException
se acerca, aunque no dice que la operación simplemente no está implementada, sino que incluso no es compatible. Eso podría implicar que no es posible una implementación válida. ¿Por qué la operación no sería compatible? ¿Debería estar allí? ¿Segregación de interfaz o problemas de sustitución de Liskov tal vez?
Si se trata de un trabajo en progreso, iría ToBeImplementedException
, pero nunca me he dado cuenta de que definí un método concreto y luego lo dejé por tanto tiempo que llega a la producción y sería necesario hacer tal excepción.