Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

unidades:07_arquitectura:02_excepciones [2012/09/07 01:11]
admin [El código de BussinessException]
unidades:07_arquitectura:02_excepciones [2016/07/03 20:35] (actual)
Línea 1: Línea 1:
 ====== Excepciones ====== ====== Excepciones ======
-Nuestro siguiente tema a tratar con la arquitectura de Hibernate es el tratamiento de las excepciones. +Nuestro siguiente tema a tratar con la arquitectura de Hibernate es el tratamiento de las excepciones.Antes de ver este tema es recomendable la lectura de [[patrones:excepciones]].
 ===== Tratamiento de Excepciones ===== ===== Tratamiento de Excepciones =====
 Al realizar una operación con Hibernate se pueden lanzar cualquiera de las siguiente 4 excepciones: Al realizar una operación con Hibernate se pueden lanzar cualquiera de las siguiente 4 excepciones:
Línea 23: Línea 22:
         }         }
     } catch (Exception exc) {     } catch (Exception exc) {
-        log.error("Falló al hacer un rollback", exc);+        LOGGER.log(Level.WARNING,"Falló al hacer un rollback", exc);
     }     }
     throw new BussinessException(cve);                 throw new BussinessException(cve);            
Línea 32: Línea 31:
         }         }
     } catch (Exception exc) {     } catch (Exception exc) {
-        log.error("Falló al hacer un rollback", exc);+        LOGGER.log(Level.WARNING,"Falló al hacer un rollback", exc);
     }     }
     throw new BussinessException(cve);     throw new BussinessException(cve);
Línea 41: Línea 40:
         }         }
     } catch (Exception exc) {     } catch (Exception exc) {
-        log.error("Falló al hacer un rollback", exc);+        LOGGER.log(Level.WARNING,"Falló al hacer un rollback", exc);
     }     }
     throw ex;                    throw ex;               
Línea 50: Línea 49:
         }         }
     } catch (Exception exc) {     } catch (Exception exc) {
-        log.error("Falló al hacer un rollback", exc);+        LOGGER.log(Level.WARNING,"Falló al hacer un rollback", exc);
     }     }
     throw ex;     throw ex;
Línea 59: Línea 58:
         }         }
     } catch (Exception exc) {     } catch (Exception exc) {
-        log.error("Falló al hacer un rollback", exc);+        LOGGER.log(Level.WARNING,"Falló al hacer un rollback", exc);
     }     }
     throw new RuntimeException(ex);     throw new RuntimeException(ex);
Línea 73: Línea 72:
     }     }
 } catch (Exception exc) { } catch (Exception exc) {
-    log.error("Falló al hacer un rollback", exc);+    LOGGER.log(Level.WARNING,"Falló al hacer un rollback", exc);
 } }
 </code> </code>
  
-La propiedad ''log'' la definiremos como una propiedad a nivel de clase usando [[http://commons.apache.org/logging/|Apache Common Loggin]] de la siguiente forma:+La propiedad estática ''LOGGER'' la definiremos como una propiedad a nivel de clase usando [[http://docs.oracle.com/javase/6/docs/technotes/guides/logging/|Java Logging APIs]] de la siguiente forma:
 <code java> <code java>
-protected final Log log LogFactory.getLog(getClass());+private final static Logger LOGGER Logger.getLogger(ProfesorController.class .getName());
 </code> </code>
  
 Veamos ahora el tratamiento individualizado para cada una de ellas: Veamos ahora el tratamiento individualizado para cada una de ellas:
- 
 ==== RuntimeException ==== ==== RuntimeException ====
 Si la excepción es de tipo ''RuntimeException'' lo único que hacemos es volver a relanzar la misma excepción mediante: Si la excepción es de tipo ''RuntimeException'' lo único que hacemos es volver a relanzar la misma excepción mediante:
Línea 96: Línea 94:
 </code> </code>
  
-De esa forma evitamos la obligación de tratar las Checked Exceptions de Java+De esa forma evitamos la obligación de tratar las Checked Exceptions de Java cuando no sabemos que hacer con ella.
- +
-<note tip> +
-En la comunidad Java siempre hay un gran debate al respecto de las Checked Exceptions vs Unchecked Exceptions. +
- +
-Mi opinión personal es que sólo aquellas excepciones de las que nos podemos recuperar deberían ser Checked Exceptions. El resto deberían ser Unchecked Exceptions.  +
- +
-Por degracia en muchas clases del JDK se han usado Checked Exceptions para errores en los que era poco probable que pudieramos solucionar algo. Un ejemplo de ello es el API de JDBC , en el que la mayoría de métodos lanzaban la Checked Exception <javadoc jdk7>java.sql.SQLException</javadoc>. +
- +
-Por otro lado Hibernate eligió la opción opuesta y lanza Unchecked Exception mediante <javadoc h41>org.hibernate.HibernateException</javadoc>. +
-</note>+
  
 ==== javax.validation.ConstraintViolationException ==== ==== javax.validation.ConstraintViolationException ====
Línea 121: Línea 109:
  
 ==== BussinessException  ==== ==== BussinessException  ====
-Si se produce ésta excepción simplemente la volveremos a relanzar sin modificar nada ya que queremos que se //vea// ta y como es. +Si se produce ésta excepción simplemente la volveremos a relanzar sin modificar nada ya que queremos que se //vea// tal y como es. 
 <code java> <code java>
 throw ex; throw ex;
Línea 165: Línea 153:
 <uml> <uml>
 class BussinessException class BussinessException
 +BussinessException : Set<BussinessMessage> getBussinessMessages()
 +
 class BussinessMessage class BussinessMessage
  
Línea 173: Línea 163:
  
 class ConstraintViolationException class ConstraintViolationException
 +ConstraintViolationException : Set<ConstraintViolation> getConstraintViolations() 
 +
 class ConstraintViolation class ConstraintViolation
  
Línea 498: Línea 490:
 fieldName=getCaptions(constraintViolation.getRootBeanClass(), constraintViolation.getPropertyPath()); fieldName=getCaptions(constraintViolation.getRootBeanClass(), constraintViolation.getPropertyPath());
 </code> </code>
 +
 +<note>
 +Para la realización de éste código se han usado las clases <javadoc s31>org.springframework.util.ReflectionUtils</javadoc> y <javadoc s31>org.springframework.util.StringUtils</javadoc> del framework Spring. Estas clases son simple clases de utilidad con funciones sencillas. Para poder usarlas se ha incluido el jar ''org.springframework.core-3.1.2.RELEASE.jar''. En la siguiente sesión trataremos en profundidad el framework de Spring y explicaremos como instalarlo adecuadamente.Por ahora simplemente recordar el incluir el jar ''org.springframework.core-3.1.2.RELEASE.jar'' en los ejercicios que se realicen.
 +</note>
unidades/07_arquitectura/02_excepciones.1346973070.txt.gz · Última modificación: 2016/07/03 20:37 (editor externo)
Ir hasta arriba
CC Attribution-Noncommercial-Share Alike 3.0 Unported
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0