Duplicar posibles:
Is it possible to detect if an exception occurred before I entered a finally block?En un bloque finally, puedo saber si una excepción ha sido lanzada
Tengo un método de flujo de trabajo que hace las cosas, y produce una excepción si un Se produjo un error. Deseo agregar métricas de informes a mi flujo de trabajo. En el bloque finally de abajo, ¿hay alguna forma de saber si uno de los métodos en el bloque try/catch arrojó una excepción?
Podría agregar mi propio código catch/throw, pero preferiría una solución más limpia ya que este es un patrón que estoy reutilizando en mi proyecto.
@Override
public void workflowExecutor() throws Exception {
try {
reportStartWorkflow();
doThis();
doThat();
workHarder();
} finally {
/**
* Am I here because my workflow finished normally, or because a workflow method
* threw an exception?
*/
reportEndWorkflow();
}
}
Esta pregunta puede ser un duplicado de la sugerida, pero es muy difícil de decir, porque la otra pregunta es bastante admirable. La capacidad de determinar dentro de un bloque final si el bloque se está ejecutando dentro del flujo de control normal o debido a una excepción que se ha lanzado sería inmensamente útil porque simplificaría el procesamiento de las transacciones; por desgracia, ni Java ni C# ofrecen actualmente esta habilidad afaik. Vergüenza. –