¿Hay algo como NotImplementedException de .NET en Java?

5 minutos de lectura

avatar de usuario
elíseo devorado

¿Hay algo como .NET? NotImplementedException en Java?

avatar de usuario
Ravi Wallau

lenguaje común lo tiene O podrías lanzar un UnsupportedOperationException.

avatar de usuario
chris dail

Pienso que el java.lang.UnsupportedOperationException es lo que buscas

  • Yo digo que es algo muy diferente. El NIE también me dice que puede que aún no esté implantado, mientras que la UOE me dice que nunca lo hará…

    – Dykam

    24 de febrero de 2010 a las 21:01

  • @Dykam, ¿entonces no sería una excepción NotImplementedYetException?

    – Yishai

    24 de febrero de 2010 a las 21:06

  • @Dykam: new UnsupportedOperationException("Not implemented yet") – ¿contento?

    –Michael Borgwardt

    24 de febrero de 2010 a las 21:08


  • No quise decir que fuera peor, solo tenía un caso de uso diferente.

    – Dykam

    25 de febrero de 2010 a las 5:46

  • new UnsupportedOperationException(“Aún no implementado”) es una idea increíble. 🙂 en lang3 por alguna razón no tengo NotImplementedException así que esta es una gran solución

    – ufk

    6 de julio de 2011 a las 9:35

avatar de usuario
Ready4Android

Podría hacerlo usted mismo (eso es lo que hice yo): 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 un recordatorio de que todavía hay algo que implementar), generalmente no hay necesidad de mensajes adicionales.

Me atrevo a decir que solo uso este método, mientras estoy en el proceso de desarrollar un sistema, lo que me facilita no perder la noción de qué métodos aún no se implementan correctamente 🙂

  • Me gusta más esta solución porque es fácil tener un controlador de errores especial para ella, es fácil buscarla encontrando todas las referencias al constructor NotImplementedException, y son solo unas pocas líneas de código. Pero es un poco inconveniente tener que declarar una nueva clase con su propio archivo.

    – Chiara Coetzee

    31 de marzo de 2012 a las 13:19

  • Estoy de acuerdo. Esto es mejor que el uso de UnsupportedOperationException en mi opinión. ¡Ahora, si tan solo Java agregara esto a la biblioteca común de excepciones!

    – Persona especial

    5 sep 2013 a las 12:50

  • Realmente, UnsupportedOperationException también se extiende RuntimeExceptiony admite un mensaje opcional.

    – bvdb

    1 de julio de 2020 a las 13:08

avatar de usuario
Jens Banmann

Como se mencionó, el JDK no tiene una coincidencia cercana. Sin embargo, mi equipo ocasionalmente también tiene un uso para tal excepción. Podríamos haber ido con UnsupportedOperationException como lo sugieren otras respuestas, pero preferimos una clase de excepción personalizada en nuestra biblioteca base que tiene constructores obsoletos:

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:

  1. Cuando los lectores ven NotYetImplementedExceptionsaben que se planeó una implementación y se olvidó o aún está en progreso, mientras que UnsupportedOperationException dice (de acuerdo con 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.
  2. Con la advertencia de desaprobación en cada sitio de llamada, su IDE y la herramienta de análisis de código estático pueden recordarle dónde aún tiene que implementar algo. (Este uso de la desaprobación puede parecer incorrecto para algunos, pero, de hecho, la desaprobación no se limita a anunciar la eliminación).
  3. Los constructores están en desuso, no la clase. De esta manera, solo obtiene una advertencia de desaprobación dentro del método que necesita implementarse, no en el import línea (JDK 9 arreglado estoaunque).

avatar de usuario
Lirón

No, no lo hay y probablemente no lo esté, porque hay muy pocos usos válidos para él. Lo pensaría dos veces antes de usarlo. Además, es realmente fácil crearlo usted mismo.

Consulte esta discusión sobre por qué está incluso en .NET.

Supongo 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é no se admite la operación? ¿Debería estar allí? ¿Segregación de interfaz o problemas de sustitución de Liskov, tal vez?

Si es un trabajo en progreso, iría por ToBeImplementedExceptionpero nunca me sorprendí definiendo un método concreto y luego lo dejé tanto tiempo que llega a producción y sería necesario tal excepción.

avatar de usuario
Ian Boyd

En el espíritu de Stackoverflow como un combinación de Reddit y Wikipediaaquí hay información adicional, que es relevante para la pregunta y también puede ser una respuesta a la pregunta.

Cuando le pide a NetBeans IDE que cree una implementación faltante, utiliza un UnsupportedOperationException:

void setPropertiesWithReader(IDataReader rdr)
{
   throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
}

Si es lo suficientemente bueno para NetBeans, es lo suficientemente bueno para nosotros.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad