En particular, ¿existe una subclase estándar Exception
utilizada en estas circunstancias?¿Cuál es la excepción estándar para lanzar en Java para operaciones no compatibles/implementadas?
Respuesta
java.lang.UnsupportedOperationException
arrojado para indicar que la operación solicitada no es compatible.
ignore este ridículo "esto es parte del marco de colecciones", está en el paquete 'java.lang', el JavaDoc establece explícitamente que esto es para lo que sirve. –
@JarrodRoberson Bien, esa afirmación realmente debería eliminarse de la documentación de la clase en ese caso. La excepción parece ser utilizada por otros paquetes. Supongo que si Oracle lo hace, entonces nosotros también deberíamos hacerlo. Archivaré un informe de error. –
Si quieres más granularidad y una mejor descripción, desde que se podrían utilizar NotImplementedException de commons-lang
Advertencia: disponible antes y después de las versiones 2.6 versiones 3.2, solamente.
diferenciar entre los dos casos se denomina:
para indicar que la operación solicitada no es compatible y muy probablemente nunca será, lanzar una
UnsupportedOperationException
.para indicar la operación solicitada no se ha aplicado todavía, elija entre lo siguiente:
Utilice la
NotImplementedException
de apache commons-lang que estaba disponible en commons-lang2 y se ha añadido de nuevo a commons-lang3 en versión 3.2.Implemente su propio
NotImplementedException
.Lanza un
UnsupportedOperationException
con un mensaje como "No implementado, todavía".
Voy con esto, porque me parece razonable. "Sin embargo" o "nunca" indicado por la Excepción da una idea sobre cómo reaccionar sobre esto. – sschrass
#s 1 o 2 son muy preferibles en la práctica.# 3 captura la distinción semántica entre "no admitido" y "no implementado", pero tener una clase separada hace que sea más fácil hacer una búsqueda rápida para verificar que no se haya olvidado de implementar todo lo que debería antes de comprometerse. –
Si crea una función nueva (todavía no implementado) en NetBeans, entonces se genera un cuerpo de método con la siguiente afirmación:
throw new java.lang.UnsupportedOperationException("Not supported yet.");
Por lo tanto, recomiendo utilizar el UnsupportedOperationException .
- 1. Cuál es el criterio para lanzar excepciones en la subclase
- 2. Java: ¿por qué no puedo lanzar una excepción en Comparator?
- 3. java: no se puede volver a lanzar una excepción: no controlada tipo de excepción Excepción
- 4. Excepción apropiada para lanzar cuando ocurre un error de análisis?
- 5. Lanzar una excepción no definida en la interfaz
- 6. Lanzar/no-lanzar una excepción basada en un parámetro: ¿por qué no es una buena idea?
- 7. Force Rails 3 buscador dinámico para lanzar la excepción RecordNotFound?
- 8. Para WebGrid o no para WebGrid ... ¿cuál es la respuesta?
- 9. Lanzar manualmente una excepción
- 10. ¿Es apropiado lanzar una excepción de CoerceValueCallback
- 11. Lanzar una nueva excepción al lanzar una excepción antigua
- 12. Razones para la estructura de la jerarquía de excepción estándar
- 13. En Java, ¿cuál es el "orden de operaciones" booleano?
- 14. API para establecer operaciones en Java?
- 15. ¿Excepción estándar o personalizada en C++?
- 16. ¿Cuál es la regla general para crear una excepción en Java?
- 17. Lanzar un shell IPython en la excepción
- 18. Lanzar Excepción genérica desalentado?
- 19. ¿Cuál es el operador & = para en Java
- 20. Java: ¿la clase de excepción es segura para subprocesos?
- 21. Lanzar excepción en try bloque
- 22. ¿Cuál es el propósito de lanzar subclases de excepciones específicas?
- 23. ¿Están permitidas las operaciones estándar de iterador?
- 24. ¿Cuál es el estándar aceptado para dictar expresiones lambda?
- 25. ¿Lanzar una excepción sin detener la ejecución?
- 26. Estándar Java para comunicación cliente/servidor
- 27. Cómo lanzar una excepción marcada de un hilo de Java?
- 28. ¿Cuál es la sintaxis para MOD en java
- 29. En Java, ¿cuál es la sintaxis para comentar múltiples líneas?
- 30. Cómo lanzar una excepción cuando la firma de su método no permite lanzar Exception?
¿Es apropiado utilizarlo cuando una clase no implementa un método, pero las clases secundarias pueden hacerlo? En otras palabras, tener un método abstracto en una clase no abstracta. – osa
@SergeyOrshanskiy Es útil cuando, dependiendo de cómo construya un objeto, necesita crear una clase anónima que implemente una interfaz para instanciar una variable miembro, pero no desea que se use. Si lo configura en 'nulo' y lo usó accidentalmente (o lo hizo alguien más) obtendría' NullPointerExceptions' que son menos obvias que 'UnsupportedOperationExceptions' en este caso. Solo un ejemplo. – 2rs2ts