Escribí una clase que carga los objetos de configuración de mi aplicación y los hace un seguimiento para que pueda escribir fácilmente cambios o volver a cargar toda la configuración a la vez con una sola llamada a un método. Sin embargo, cada objeto de configuración podría arrojar una excepción al hacer IO, pero no quiero que esos errores cancelen el proceso general para dar a los demás objetos la posibilidad de volver a cargar/escribir. Por lo tanto, recopilo todas las excepciones que se lanzan al iterar sobre los objetos y almacenarlos en una super-excepción, que se lanza después del bucle, ya que cada excepción debe ser manejada y alguien debe ser notificado de qué fue exactamente lo que salió mal. Sin embargo, ese enfoque me parece un poco extraño. Alguien por ahí con una solución más limpia?Manejo de múltiples excepciones
Aquí hay un código de la clase mencionada:
public synchronized void store() throws MultipleCauseException
{
MultipleCauseException me = new MultipleCauseException("unable to store some resources");
for(Resource resource : this.resources.values())
{
try
{
resource.store();
}
catch(StoreException e)
{
me.addCause(e);
}
}
if(me.hasCauses())
throw me;
}
Considerando la recarga, los objetos que emiten una excepción representan el último estado consistente posible (es decir, mantienen una copia obsoleta de la configuración). –