java - 在 finally block 中,我可以判断是否抛出了异常

标签 java exception try-catch-finally

Possible Duplicate:
Is it possible to detect if an exception occurred before I entered a finally block?

我有一个工作流方法,它会在发生错误时抛出异常。我想将报告指标添加到我的工作流程中。在下面的 finally block 中,有什么方法可以判断 try/catch block 中的方法之一是否引发了异常?

我可以添加自己的 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(); 
  }
}

最佳答案

Java 没有提供自动方式。您可以使用 boolean 标志:

boolean success = false;
try {
  reportStartWorkflow();
  doThis();
  doThat();
  workHarder();
  success = true;
} finally {
  if (!success) System.out.println("No success");
}

关于java - 在 finally block 中,我可以判断是否抛出了异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10736238/

相关文章:

java - 字符串无法转换为 StringBuffer

java - 替换时不将 fragment 添加到后堆栈

php - 使用 SYmfony 在 PHP 中处理 "Undefined Index"

delphi - 空的 Try/Finally block 有什么用途吗?

java - 如何在运行时从 Jasper Report 中抛出异常(使用 iReport for IDE)- XML 数据源上的数据验证

java - Java 中的 try-catch-finally block

java.sql.SQLException : ORA-01002: fetch out of sequence 异常

java.lang.UnsatisfiedLinkError Windows 上的 JNI 错误

java - 声明异常而不是处理异常有什么意义

.net - 返回最后一 block ……为什么不呢?