r01f.exceptions
Class EnrichedException

java.lang.Object
  extended by java.lang.Throwable
      extended by java.lang.Exception
          extended by r01f.exceptions.EnrichedException
All Implemented Interfaces:
java.io.Serializable, EnrichedThrowable
Direct Known Subclasses:
MarshallerException, XMLPropertiesException

public abstract class EnrichedException
extends java.lang.Exception
implements EnrichedThrowable

Excepcion enriquecida Permite establecer atributos como: - subClase: En ocasiones se crean diferentes excepciones (ej: RecordInsertException, RecordDeleteException, RecordUpdateException) lo que obliga al código cliente a hacer catch de todas ellas: try { // database code } catch(RecordInsertException riEx) { ... } catch(RecordDeleteException rdEx) { ... } catch(RecordUpdateException ruEx) { ... } Sería mejor lanzar una excepción "generica" (ej. DBExcepcion) e indicar en algún parámetro el tipo de excepción, en este caso el código queda un poco más compacto y se sigue teniendo información sobre la excepción básica try { // database code } catch(DBException dbEx) { ... se tiene acceso al tipo de excepcion: dbEx.customizations().subClass() ... y también se puede actuar en función del tipo (si es necesario) switch(dbEx.customizations().subClass()) { case A: ... case B: ... default: ... } } - group/code: valores numéricos de grupo y codigo - severidad: valor pre-definido de severidad en ExceptionSeverity - Mensajes adicionales de trazabilidad - Si la excepción ha de ser logeada o no - si ha de ser lanzada "tal cual" (con toda la pila de excepciones) o como una nueva excepción en la que la pila de excepciones se sustituye por un mensaje de texto El uso habitual de estas excepciones es: 1.- Crear una clase que extiende de esta: public class TestException extends EnrichedException { public TestException() { super(); } public TestException(Exception otherEx) { super(otherEx); }

See Also:
Serialized Form

Field Summary
private  EnrichedThrowableCustomizations<? extends EnrichedThrowable,? extends java.lang.Enum<?>> _exWrapper
          Wrapper de la excepción que permite almacenar información extendida sobre la excepción como: - Sub-clase: un enum de diferentes sub-tipos de la excepcion - group/code: valores numéricos de grupo y code de la excepcion - Severidad: un enum de severidades pre-definidas - si ha de ser logeada o no - si ha de ser lanzada "tal cual" (con toda la pila de excepciones) o como una nueva excepción en la que la pila de excepciones se sustituye por un mensaje de texto - Mensajes adicionales de trazabilidad
private static long serialVersionUID
           
 
Constructor Summary
EnrichedException()
           
EnrichedException(java.lang.String msg)
           
EnrichedException(java.lang.String msg, java.lang.Throwable otherEx)
           
EnrichedException(java.lang.Throwable otherEx)
           
 
Method Summary
private  void _wrap(java.lang.String msg, java.lang.Throwable otherEx)
          Encapsula la excepcion en un wrapper que contiene toda la lógica
<T extends EnrichedThrowable,S extends java.lang.Enum<S>>
EnrichedExceptionCustomizationsInterfaces.ExceptionCustomizationsReader<T,S>
customizations()
           
<T extends EnrichedThrowable,S extends java.lang.Enum<S>>
EnrichedExceptionCustomizationsInterfaces.ExceptionCustomizationsWriter<T,S>
customized()
           
 java.util.List<java.lang.Throwable> getCausalChain()
          Devuelve la lista de excepciones
 java.util.List<java.lang.Throwable> getCausalChainReversed()
          Devuelve la lista de excepciones en orden inverso (la causa es la primera)
 java.lang.String getMessage()
           
 java.lang.Throwable getRootCause()
          Devuelve la causa raíz de la excepcion
 java.lang.String getRootClassName()
          Devuelve el nombre de la clase que ha lanzado la excepción
 java.lang.String getRootMethod()
          Devuelve el nombre del método que ha lanzado la excepción
 java.lang.String getRootTraceElement()
          Devuelve la clase y método que ha lanzado la excepción
 java.lang.String getStackTraceAsString()
           
 
Methods inherited from class java.lang.Throwable
fillInStackTrace, getCause, getLocalizedMessage, getStackTrace, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface r01f.exceptions.EnrichedThrowable
fillInStackTrace, printStackTrace
 

Field Detail

serialVersionUID

private static final long serialVersionUID
See Also:
Constant Field Values

_exWrapper

private EnrichedThrowableCustomizations<? extends EnrichedThrowable,? extends java.lang.Enum<?>> _exWrapper
Wrapper de la excepción que permite almacenar información extendida sobre la excepción como: - Sub-clase: un enum de diferentes sub-tipos de la excepcion - group/code: valores numéricos de grupo y code de la excepcion - Severidad: un enum de severidades pre-definidas - si ha de ser logeada o no - si ha de ser lanzada "tal cual" (con toda la pila de excepciones) o como una nueva excepción en la que la pila de excepciones se sustituye por un mensaje de texto - Mensajes adicionales de trazabilidad

Constructor Detail

EnrichedException

public EnrichedException()

EnrichedException

public EnrichedException(java.lang.String msg)

EnrichedException

public EnrichedException(java.lang.Throwable otherEx)

EnrichedException

public EnrichedException(java.lang.String msg,
                         java.lang.Throwable otherEx)
Method Detail

customizations

public <T extends EnrichedThrowable,S extends java.lang.Enum<S>> EnrichedExceptionCustomizationsInterfaces.ExceptionCustomizationsReader<T,S> customizations()
Specified by:
customizations in interface EnrichedThrowable

customized

public <T extends EnrichedThrowable,S extends java.lang.Enum<S>> EnrichedExceptionCustomizationsInterfaces.ExceptionCustomizationsWriter<T,S> customized()
Specified by:
customized in interface EnrichedThrowable

_wrap

private void _wrap(java.lang.String msg,
                   java.lang.Throwable otherEx)
Encapsula la excepcion en un wrapper que contiene toda la lógica

Parameters:
msg - el mensaje
ex - la excepcion

getMessage

public java.lang.String getMessage()
Overrides:
getMessage in class java.lang.Throwable

getRootCause

public java.lang.Throwable getRootCause()
Devuelve la causa raíz de la excepcion

Returns:

getCausalChain

public java.util.List<java.lang.Throwable> getCausalChain()
Devuelve la lista de excepciones

Returns:
la lista de excepciones

getCausalChainReversed

public java.util.List<java.lang.Throwable> getCausalChainReversed()
Devuelve la lista de excepciones en orden inverso (la causa es la primera)

Returns:
la lista de excepciones

getRootClassName

public java.lang.String getRootClassName()
Devuelve el nombre de la clase que ha lanzado la excepción

Returns:
el nombre de la clase donde se ha lanzado la excepción

getRootMethod

public java.lang.String getRootMethod()
Devuelve el nombre del método que ha lanzado la excepción

Returns:
el nombre del método que ha lanzado la excepción

getRootTraceElement

public java.lang.String getRootTraceElement()
Devuelve la clase y método que ha lanzado la excepción

Returns:
la clase y el método que ha lanzado la excepción

getStackTraceAsString

public java.lang.String getStackTraceAsString()
Specified by:
getStackTraceAsString in interface EnrichedThrowable