是否有可能找到在eclipse中捕获特定抛出异常的位置?

Ste*_*hen 7 java eclipse exception

我正在尝试跟踪IO资源泄漏,其中连接已打开但未必关闭:

try{ 
     ...
     urlConnection.connect();
     ...
     connectionResult.setResultInputStream(urlConnection.getInputStream());
     return connectionResult;

} catch (IOException e) {
     throw new ValidationException(e, new LocationData(submissionURL.toExternalForm(), -1, -1));
}
Run Code Online (Sandbox Code Playgroud)

有没有办法可以找出ValidationException通过调用层次结构捕获的位置?手动步骤如下:

  1. 请调用包含方法的heirarchy
  2. 对于每个来电者:
    • 分析周围的代码,找到try catch块
    • 如果捕获到异常,请评估流关闭
    • 如果没有,请重复1.

笔记

  • 这是不可重复的; 只有一个客户在其故障转移环境中遇到此问题 - 产品版本已有5年历史,之前从未显示过此类问题.
  • 我可以找到抛出异常的所有情况; 我想找到这种特定抛出的异常可以被捕获(包括catch Exception等)

Ste*_*n C 1

Eclipse“开箱即用”当然不支持这一点。他们可能是一个支持此功能的 Eclipse 插件,但我还没有听说过。(这是你在实践中很少需要做的事情......所以没有理由去努力实现这一点。)

代码分析的一种替代方法是破解代码,在您可以控制的某些情况下引发异常,然后使用 Java 调试器查看实际捕获的位置。

另一种选择可能是整合自定义 PMD 规则来识别相关捕获。我不认为这会很简单...