가능한 중복 :
Is it possible to detect if an exception occurred before I entered a finally block?는 알 수
내가 일을 워크 플로우 방법이 있고,이 경우 예외가 발생합니다 오류가 발생했습니다. 내 작업 흐름에보고 메트릭을 추가하고 싶습니다. 아래 finally 블록에서 try/catch 블록의 메서드 중 하나가 예외를 throw했는지 알 수있는 방법이 있습니까?
내 자신의 catch/throw 코드를 추가 할 수 있지만이 패턴은 프로젝트 전체에서 재사용하고 있기 때문에 더 깨끗한 솔루션을 선호합니다.
@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();
}
}
이 질문은 제안 된 것과 중복 될 수 있지만 다른 질문은 매우 훌륭하게 뒤 틀리기 때문에 말할 수 없습니다. finally 블록 내에서 블록이 정상적인 제어 흐름 내에서 실행되는지 또는 예외 발생으로 인해 실행되는지를 결정하는 기능은 트랜잭션 처리를 단순화하므로 매우 유용합니다. 아아, 자바도 C#도 현재이 능력을 제공하지 못합니다. 부끄러움. –