NetBeans中的调试器输出

如何解决NetBeans中的调试器输出

我想从Visual Studio(C#)更改为NetBeans(Java),但是下面描述的问题困扰我(调试器输出未在发生中断的用户代码中显示行)。

(问题的更正版本)

我将Java与 NetBeans v8.2, Apache Tomcat v9(JSP)和 PostgreSQL v9.5(postgresql-42.2 .5.jar库),没有其他添加项,例如。 Spring框架,Maven等。在NetBeans中,我定义了断点,当发生异常时该断点应该自动附加,例如Visual Studio本身就是如此。在NetBeans中,您必须自己设置此类异常,方法是在Breakpoints窗口中指定一个异常类名称(如您所知)。这些已定义的异常中的大多数确实可以正确地停止执行,并在发生意外问题的地方显示代码行,并且您可以查看变量状态等(如您所知)。通常,对于大多数Java代码来说,定义Throwable(作为异常类名称)对我来说很好用,但是当Throwable不起作用时,我必须定义一些其他代码。

enter image description here

上述异常工作正常,但 org.postgresql.util.PSQLException 不能(!)

((我在PSQLException上面使用了一些排除项-那些不希望破坏该异常的库:“ java。,sun。,javax。,com.sun。,jdk。,org.apache。,org.springframework。,org.eclipse。“-我只想在我的代码中打扰一下

下面我显示正在发生的事情。

我有一个PostgreSQL连接:

Connection conn = DriverManager.getConnection(
        cs.getPgUrlJdbc(),cs.getUser(),String.valueOf(cs.getPassword()));
Statement cmd = conn.createStatement();
// This is the step where error occurs because of bad schema name
ResultSet result = cmd.executeQuery(“select * from zinformation_schema.columns”);

上面的查询引用了一个不存在的表(实际上是模式)。当它出现时,IDE不会发出信号(系统托盘上的图标没有像手动设置断点时那样闪烁)。因此,您必须保持警惕,这本身就是一个问题(请不断检查IDE并查看是否发生了什么事?)。

(是的,IDE将与中断位置相对应的行涂成紫色,但是您必须自己浏览文件才能找到它。即使找到它,也看不到变量的状态。甚至然后手动插入一个断点,但这并不能改变您始终必须首先确定程序已停止并进行恼人的断点搜索这一事实。

以下输出将显示在 Debugger Console 窗口中:

异常org.postgresql.util.PSQLException(

可能没有被事件(断点,步骤等)挂起。>)中断http:// nio-8080-exec-156在org.postgresql.core.ResultHandlerBase中的63行命中了。 / em>

(没有被断点挂起!)再次重复了上述内容,然后:

线程http-nio-8080-exec-156在ResultHandlerBase.java:63处停止了。

当然,上面提到的文件都不是我的,而PostgreSQL是。 因此,我按下 Step (跳过),并且窗口 Debugger Console (调试器控制台)也显示:

用户程序正在运行

异常org.postgresql.util.PSQLException(“错误:关系” zinformation_schema.columns“不存在*

位置:15“)断点在380.线程http-nio-8080-exec-156在org.postgresql.core.v3.QueryExecutorImpl中命中。

上面写过2次(照常),然后:

线程http-nio-8080-exec-156在QueryExecutorImpl.java:380处停止。

同样,在我的代码中,我没有关于问题根源的任何信息,它仅显示PostgreSQL库中正在发生的事情。 文字“ 关系zinformation_schema.columns不存在”可能是我可以使用在文件中查找找到的线索,但是如果表名是每次由用户给出或来自外部资源(来自文件,数据库等)时,都需要对整个程序进行分析。

我第二次跳过

用户程序正在运行

线程http-nio-8080-exec-156在PgStatement.java:444处停止了。

有些新东西,但是我仍然不知道我的代码中需要改进的地方,并且我逐渐感到沮丧。

Apache Tomcat或TomEE日志 Apache Tomcat或TomEE 控制台保持沉默。 进一步推动 Step 不会带来任何新变化,除了消息在每次移动(可能无关紧要?)时在PgStatement.java文件(PostgreSQL的库)中显示不同的行号:

用户程序正在运行

线程http-nio-8080-exec-156在PgStatement.java:444处停止了。

用户程序正在运行

线程http-nio-8080-exec-156在PgStatement.java:366处停止了。

用户程序正在运行

线程http-nio-8080-exec-156在PgStatement.java:368处停止了。

用户程序正在运行

线程http-nio-8080-exec-156在PgStatement.java:369处停止了。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com(将#修改为@)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?