Java 获取数据库连接时eclipse中的调试问题
我在获得连接时调试java程序时遇到问题,但程序成功执行并获得所需的输出 下面是我获取连接对象的代码Java 获取数据库连接时eclipse中的调试问题,java,eclipse,debugging,Java,Eclipse,Debugging,我在获得连接时调试java程序时遇到问题,但程序成功执行并获得所需的输出 下面是我获取连接对象的代码 public class CRMConnection { private static String url = "jdbc:oracle:thin:@hostname:1521:dbname"; private static String username = "crmuser"; private static String password = "crmuser"; public stati
public class CRMConnection
{
private static String url = "jdbc:oracle:thin:@hostname:1521:dbname";
private static String username = "crmuser";
private static String password = "crmuser";
public static Connection getConnection()
{
Connection conn=null;
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=DriverManager.getConnection(url,username,password);
}
catch(SQLException e)
{
System.out.println("exception1:"+e)
}
catch(ClassNotFoundException e)
{
System.out.println("exception2:"+e)
}
return conn;
}
下面我从另一个类调用getConnection()方法
Connection conn = CRMConnection.getConnection();
如果我在eclipse中以正常模式运行程序,我不会遇到任何问题。我得到了期望的输出。
但如果我在调试模式下运行程序,在执行CRMConnection.getConnection()时,我会低于方法调用堆栈,但如果我继续按F8,程序会成功执行
我不知道为什么eclipse在执行getConnection()时显示在调用堆栈下面。是我的代码有问题还是eclipse调试问题
我正在方法调用堆栈中进入eclipse调试窗口
FileInputStream.open(String) line: not available [native method]
OracleDriver.<clinit>() line: 313
Class<T>.forName0(String,boolean,ClassLoader) line: not available
CRMConnection.getConnection() line : 19
FileInputStream.open(字符串)行:不可用[本机方法]
OracleDriver.()线路:313
Class.forName0(字符串、布尔值、类加载器)行:不可用
CRMConnection.getConnection()行:19
需要java专家的建议。这不是堆栈跟踪。堆栈跟踪以异常及其消息开始。停止使用空catch块忽略异常。将它们替换为抛出新的RuntimeException(e)代码>如果不想处理选中的异常。这将得到一个真正的堆栈跟踪。我试图在catch块中打印异常,但在控制台中没有打印。我得到数据库连接,程序在正常和调试模式下成功执行。上面的错误没有停止我的程序执行,但是在调试我得到的时候。要打印堆栈跟踪,您需要
e.printStackTrace()
。不System.out.println(“例外1:+e)
。是的,它将在控制台中打印,除非控制台被重定向到某个文件。你说得对。我们需要使用e.printStackTrace()。你是说我的代码有问题吗?如果我的代码有问题,为什么我会得到连接对象并启动sql查询。我不是什么意思。您正在询问获得异常的原因,但不提供堆栈跟踪。所以基本上不可能回答。我能告诉你的是,你的异常处理非常糟糕。你忽略了例外情况,这绝不是一个好主意。