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

标签 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));
}

有没有一种方法可以通过调用层次结构找出 ValidationException 将被捕获的位置?手动步骤类似于:

  1. 调用包含方法的层次结构
  2. 对于每个来电者:
    • 分析周围的代码,找到 try catch block
    • 如果捕获到异常,评估流关闭
    • 如果不是,重复1。

注意事项

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

最佳答案

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

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

另一种替代方法可能是组合一个自定义 PMD 规则来识别相关的捕获量。我不认为这会很简单......

关于java - 是否有可能找到在 Eclipse 中捕获特定抛出异常的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5945066/

相关文章:

java - 尝试保存处理中 WavePlayers 的输出

java - Eclipse包名以com开头

java - 有没有办法获取带有结果集的 JPA 命名查询的计数大小?

java - 具有返回 null 的双数组 get 方法的映射

eclipse - Eclipse Wikitext 的预览选项卡

java - 从 Eclipse 运行 hadoop 作业时出错

java - 套接字异常 : Connection reset after reconnect

java - mac终端java错误解读

从网络共享运行NET4.0应用程序时在app.config中指定defaultProxy时发生异常

java - 如何使用 Intent.FLAG_ACTIVITY_CLEAR_TOP 清除 Activity Stack?