在 Eclipse IDE 中调试 Java 时将异常作为表达式捕获

2022-09-02 03:14:37

Java开发人员的日常调试情况是,抛出异常,然后您需要深入研究调试器以找出引发异常的原因。通常,您会尝试在引发异常之前设置一些断点,并希望能够确定导致该异常的情况。

在 Eclipse 中,断点可能定义了一个表达式,例如,仅当变量 x 等于值 y 时才触发断点。我的问题是,是否有可能定义某种全局表达式,一旦抛出异常,调试器就会捕获它,允许程序员立即检查所有变量?理想情况下,您还没有命中 catch 块,Eclipse 会捕获正在引发的异常并停止执行,而无需更改堆栈内容。

这是可能的,还是受到JVM的限制?


答案 1

另一个插图:Eclipse 提示:异常时的断点

Eclipse 允许您根据发生异常的位置设置断点。
您可以通过调试窗口中“j!”http://help.eclipse.org/juno/topic/org.eclipse.jdt.doc.user/images/org.eclipse.jdt.debug.ui/elcl16/exc_catch.png图标(即“断点视图”)访问该选项。

Add Java exception Window

官方帮助主题“添加 Java 异常断点”对此有更多介绍。

  • “未捕获的异常”选项是在未捕获的位置引发与断点类型相同的异常时挂起执行。
  • “捕获的异常”选项用于在捕获的位置引发与断点类型相同的异常时挂起执行。
  • 不要忘记此异常的子类上的异常断点挂起
    在遇到异常类型的子类时挂起执行。
    例如,如果 将 的异常断点配置为在子类上挂起,则该断点也将由 触发。RuntimeExceptionNullPointerException

alt text


答案 2

http://agile.csc.ncsu.edu/SEMaterials/tutorials/eclipse-debugger/

特别是“5.0 特殊断点和监视表达式”部分。