Ver Mensaje Individual
  #10 (permalink)  
Antiguo 09/05/2006, 09:35
jvagliat
 
Fecha de Ingreso: marzo-2005
Mensajes: 58
Antigüedad: 19 años, 1 mes
Puntos: 0
Ademas con el tema de reutilizar el manejo de errores (como bien me dijiste tengo que trabajar con algo asi como exception para tratar todos los errores), pero asi no puedo contemplar excepciones que larga mi logica/mi codigo. Estoy viendo como hacerlo y lo que me sale me resulta engorrozo (mucho laburo y hay mas codigo para el manejo de excepciones que la logica propiamente dicha). Por ejemplo:

Código:
    
public void deleteOffice(String name) throws OfficeWithOrdersException,  OrderServiceException{
     Session session = null;
    Transaction tx = null;
    try{
      session = HibernateUtil.getSessionFactory().openSession();
      tx = session.beginTransaction();

      List offices = session.createQuery(
          "from Office as o where and o.name = \'" + name +
          "\'").list();
      if (offices.isEmpty()) {
        throw new IllegalArgumentException();
      }
      Office office = (Office) offices.get(0);
      java.util.Set orders = office.getOrders();
      if (!orders.isEmpty()) {
        throw new OfficeWithOrdersException();
      }
      session.delete(office);
      tx.commit();
    }catch(IllegalArgumentException e){
      tx.commit();
      throw e;
    }catch(OfficeWithOrdersException e){
      tx.commit();
      throw e;
    }catch(Exception e){
      if (tx!=null) tx.rollback();
      throw new OrderServiceException(e);
    }finally{
      if (session!=null)
        session.close();
    }
  }
}
En este caso puedo largar dos tipos de excepciones OfficeWithOrdersException e IllegalArgumentException. Por un lado en estos casos hago un commit (distinto a cuando sucede algun otro tipo de excepcion). Por otro tengo que manejar esos "tipos" de excepciones para que el codigo que afuera usa a este sepa como actuar. Entonces caigo en tener que catchear todas las que yo lanzo para hacer el commit (en "toda" mi el codigo de mi logica)y lanzar algo de ese tipo (o mandarle a lo chancho un isnstanceOf) para poder contemplar todas las restantes excepciones.

Es asi como digo? Voy a tener que hacer este manejo en cada metodo? Que opinan de lo que estoy haciendo?

Nuevamente gracias por su ayuda, saludos, pablo.