¿Es posible lanzar una excepción de Java a través del método de llamada de una clase base que no generan excepciones?

StackOverflow https://stackoverflow.com/questions/3704457

  •  02-10-2019
  •  | 
  •  

Pregunta

Esto puede ser una cuestión de Java ridículo en el manejo de excepciones, pero tengo un actor de la interfaz de usuario (una actividad Android) que está solicitando los servicios de mi subclase de ContentProvider. La subclase quiere tirar algunas excepciones cuando la tarjeta SD está llena, tarjeta SD es que falta, la red de E / S errros, etc. Sin embargo, cuando el Código de los CP-subclase de tirar mis excepciones, las ofertas del compilador para agregar las excepciones a la clase CP. Obviamente, no quiero modificar la clase base, pero quiero que la interfaz de usuario para detectar las excepciones sub-clase.

tiene sentido? es posible? Si no, ¿hay un mejor patrón para mi subclase de servicio para obtener la espalda objeto se pueda arrojar a la interfaz de usuario?

¿Fue útil?

Solución

Sólo tiene que declarar y captura "comprueba excepciones". No es necesario declarar o RuntimeExceptions captura explícitamente. Así que usted puede lanzar una RuntimeException y atraparlo dondequiera que te gusta en la jerarquía.

Otros consejos

Se puede lanzar Unchecked exceptions sin tener que añadirlos al prototipo del método.

Una excepción sin control es cualquier excepción que hereda de RuntimeException. Es eso lo que quería hacer?

Se podría lanzar instancias de subclases de RuntimeException, que no son controlados por el compilador.

Sin embargo, dicho esto, la especificación de excepción vacío es parte del contrato de los métodos de la clase base. Es deseable que las subclases para satisfacer el contrato, por lo que las instancias de la subclase se pueden utilizar en cualquier código que utiliza el tipo de superclase. (Esto se conoce como la Liskov sustitución principio .)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top