Excepciones - Resumen avanzado

Material

Pueden ver un apunte completo en este link

Formas de manejar una excepción

Propagarla

Es una buena opción cuando no se cómo salvar la situación, e implica

  1. propagar la misma exception (declarando throws XXXException en la firma del método)
  2. envolverla (wrappearla) en otra nueva, que agregará un mensaje de más alto nivel. Ej:
      public void enviarResumenMensual(Cliente c) {
    try {
        String resumen = this.generador.crearResumen(c);
        this.clienteMail.enviarMail(c.getEmail(), resumen);
    } catch (EmailException e) {
        throw new ProgramException("Error al enviar el resumen por mail al usuario " + c.getNombre(), e);
    }
}

    

Tratarla

Cuando tengo un requerimiento específico como:

Buenas Prácticas

      Error al ejecutar el ciclo de facturación
  -> Error al facturarle al usuario numero 5963472
     -> Error al enviar el resumen mensual
        -> Error al enviar el mail
           -> No me pude conectar al host 12.23.22.12

    

No olvidar de pasar la causa original del error al wrappear (en nuestro ejemplo, la referencia a través de la variable e)

      método() {
    try {
        logica
    } catch
}

    

Es decir que el try-catch envuelva “todo” el código del método. Este va de la mano con la idea de hacer métodos más chiquitos. Al hacer una sola cosa, el método solo puede tener un tipo de falla.