【问题标题】:Way to know what was the last line executed before entering a catch block with Intellij?如何知道在使用 Intellij 进入 catch 块之前执行的最后一行是什么?
【发布时间】:2016-11-08 10:19:54
【问题描述】:

调试时经常出现的一个问题是,我在代码中逐行检查,然后我突然不知从何处跳到了一个 catch 块。由于我经历了这么多行,我真的不记得是哪一行导致了 catch-block 被执行。

Intellij 是否提供任何类型的工具让我可以轻松检查给定 try 块中执行的最后一行是什么?

PS:如果我处理的是纯函数,事情并没有那么糟糕。我可以直接丢帧并再次浏览代码,特别注意在进入 catch 块之前查看哪一行是 try 块执行的最后一行。但如果方法足够长,即使这样也很乏味..

谢谢

【问题讨论】:

  • 您是否尝试对这个特定异常使用异常断点?
  • 没有。问题是我很多时候都措手不及,所以只有在事后我才担心知道自己来自哪里。

标签: java scala intellij-idea


【解决方案1】:

有时我也有这个要求。您可以尝试两种选择:

plain intellij 无需安装插件

当您在catch 块中停止时,使用expression evaluation (alt-F8) 并执行e (or ex whatever the Exception var named) .printStackTrace(),然后在您的控制台中您会看到堆栈跟踪,它指出是哪一行导致了异常。

这样,你只能从stacktrace中知道行号,但是如果你想去那里检查问题,你必须丢帧/重新开始调试。

在 intellij 中安装 chronon 插件

这个插件支持前进/后退,还有方法调用历史功能等。如果发生异常,它也可以定位导致异常的行。然后你可以alt-f6回到线路,看看发生了什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多