¿Qué excepción debo lanzar cuando un método de fábrica estática no puede inicializar un nuevo objeto? Prefiero plantear una excepción significativa en lugar de devolver null
.Java: excepción adecuada para el error de inicialización
Respuesta
Si está lanzando una excepción en una fábrica debido a datos insuficientes, me gustaría arrojar un IllegalStateException
con una descripción similar a "no se puede construir X, no se ha establecido Y".
Si está lanzando una excepción en una fábrica debido a datos contradictorios, me gustaría arrojar un IllegalStateException
con una descripción similar a "no se puede construir X, Y entra en conflicto con Z".
Si está lanzando una excepción en una fábrica debido a un valor malo (o absurdo), me gusta arrojar un IllegalArgumentException
con una descripción similar a "Y no puede ser A".
Si está lanzando una excepción en una fábrica debido a un valor perdido, me gusta arrojar un IllegalArgumentException
con una descripción similar a "Y no puede ser nulo".
La última preferencia es hasta cierto debate. Algunas personas sugieren que podría ser mejor arrojar un NullPointerException
; en mi caso, los evitamos a toda costa, ya que muchos clientes tienden a no leer el mensaje de excepción (y suponen que NullPointerException significa un error de codificación).
En cualquier caso, debe proporcionar un mensaje bueno y específico sobre por qué se lanzó la excepción, para facilitar los costos futuros de soporte de ver que la excepción se elevó en unos meses a partir de ahora.
Usted puede crear su propia excepción mediante la extensión de clase de excepciones
¿No hay una excepción incorporada para este caso? Es un escenario bastante común. –
Difícilmente podría llamar a un constructor que arroje una excepción a un escenario común – Woot4Moo
Hay muchas excepciones, pero es más flexible tenerlas si es necesario mostrar un mensaje personalizado –
Algo como esto probablemente sólo debería ser una aserción, pero si hay, de hecho, la posibilidad de que falle luego una excepción personalizada que sea significativo para que lo haría ser mi elección.
Lo ideal sería extender Exception
y crear su propio IntializatonException
.
Sí, la causa del problema es su mejor opción. Si los argumentos no son correctos, puede lanzar IllegalArgumentException, si algún archivo no está allí, puede lanzar FileNotFoundException, si la fábrica no se inicializa correctamente, puede lanzar IllegalStateException, etc., etc.
Sin embargo, crear su propia Excepción es fácil. Simplemente declare su clase como extends Exception
y agregue constructores delegados. Si extiende Exception, entonces el método que puede lanzarlo debe declararse con throws
. Si no lo desea, puede extender RuntimeException, no es necesario declararlos.
- 1. excepción en el error de inicialización
- 2. Tipo excepción de inicialización
- 3. Excepción adecuada para plantear si se encontró Ninguno como argumento
- 4. AVAudioPlayer error de inicialización
- 5. JAVA - La mejor estructura de datos adecuada
- 6. inicialización de variable estática java
- 7. Inicialización doble de Java
- 8. Inicialización de campo estático Java
- 9. serialización de Java con inicialización estática
- 10. Error de inicialización de BDE (error $ 2501) en Vista
- 11. AVAudioPlayer inicialización: código de error -50
- 12. Excepción de inicialización diferida de Grails e Hibernate
- 13. matrices Java inicialización después declaro
- 14. Excepción apropiada para lanzar cuando ocurre un error de análisis?
- 15. Diferencias entre Excepción y Error
- 16. Utilice la herramienta adecuada para el trabajo: programación integrada
- 17. Error de excepción de PHPMailer
- 18. para el bucle de inicialización falta
- 19. Cómo resolver el error AutoMapper? (Excepción stackoverflow!)
- 20. ha producido un error durante la inicialización de VM
- 21. Error de excepción en Erlang
- 22. objeto de inicialización directamente en Java
- 23. matriz de diferencias de inicialización de Java
- 24. inicialización de miembro de la clase java
- 25. ¿Cómo atrapar la excepción en la lista de inicialización?
- 26. excepción de HRESULT: 0x800A03EC error
- 27. Java - Declaración de objeto e inicialización
- 28. Java sin memoria Excepción
- 29. La inicialización de la matriz Java garantiza
- 30. Inicialización matriz de tamaño variable en Java
Depende de qué causó la falla en sí, es decir, un problema de red, una falla de lectura de archivo, etc. – Viruzzo
¿Quiere decir que debería lanzar cualquier excepción que obtuve durante la inicialización? –
No necesariamente, pero su excepción debe ser significativa para decir qué salió mal, no solo que * algo * salió mal. – Viruzzo