Java 运行executeQuery()时可能引发哪些异常

Java 运行executeQuery()时可能引发哪些异常,java,Java,我正在运行JConnector从数据库中获取数据(我使用mysql)。我从SecureShell运行查询时检查了数据,结果很好。但是,当我运行程序时,它抛出了NullPointerException,它只读取第一行。我刚学了一个月的Java,如果你们觉得我的问题很奇怪,我很抱歉。 这是我的代码: private void loadNodesFromDatabase() { Statement stmt = Database.connect(); S

我正在运行JConnector从数据库中获取数据(我使用mysql)。我从SecureShell运行查询时检查了数据,结果很好。但是,当我运行程序时,它抛出了NullPointerException,它只读取第一行。我刚学了一个月的Java,如果你们觉得我的问题很奇怪,我很抱歉。 这是我的代码:

    private void loadNodesFromDatabase()
    {
        Statement stmt = Database.connect();
        String query = "SELECT * FROM Node";
        ResultSet res;
        try 
        {
            res = stmt.executeQuery( query );
            while( res.next() ) 
            {
                Integer id = res.getInt( "Id" );
                String position = res.getString( "Position" );
                String rule = res.getString(  "RuleOnMap" );
                Integer foodTax = res.getInt(  "FoodTax" );
                boolean mapValue = res.getBoolean( "MapValue" );

                Node n = new Node( id, PointOnGraph.parse( position ), Node.RuleOnMap.valueOf( rule ), foodTax, mapValue );
                System.out.println( n );
                nodes.add( n );
            }
            res.close();
         }
         catch( Exception e ) 
         { 
             System.out.println( "Selection Error:  " + e );  
         }  
    } 
这是我创建表的查询:

mysql> CREATE TABLE Node (Id INT(3), Position VARCHAR(12),  RuleOnMap VARCHAR(6), FoodTax INT(2), MapValue TINYINT(1), PRIMARY KEY(Id));
这是来自Eclipse的错误消息:

( 1, '20,20,88', PAY, 10, false )
Selection Error:  java.lang.NullPointerException
...
谢谢

调用e.printStackTrace()后

(1,'20,20,88',支付,10,真实)
选择错误:java.lang.NullPointerException
java.lang.NullPointerException
在Game.Game.loadNodesFromDatabase(Game.java:177)
在Game.Game.(Game.java:31)
在Test.gameloaddatasetest.loadNodesTest(gameloaddatasetest.java:30)
位于Program.main(Program.java:39)
线程“main”java.lang.NullPointerException中出现异常
在Test.gameloaddatasetest.loadNodesTest(gameloaddatasetest.java:32)
位于Program.main(Program.java:39)
致以最良好的祝愿,
Chan Nguyen

看起来第一个
n
已经打印出来了,对吗


在这种情况下,我打赌
节点
。您忘记初始化列表了吗?

Hi Chan,您能告诉我们异常是从哪一行引发的吗?它应该在消息中显示(否则,在这里发布异常的前几行)。另外,异常是在读取一个节点之后还是之前引发的?嗨,Joe,谢谢阅读。在读取第一个异常后(即在while循环中),异常抛出。否,他捕获异常并使用
System.out.println(…)
打印它,该方法将只调用
exception.toString()
方法,默认为类名和消息,它不包括堆栈跟踪。如果要打印堆栈跟踪,必须使用
e.printStackTrace()
例如。^\uu^!这正是我的问题!你的猜测真是难以置信!非常感谢彼得!注意:不要捕获一般异常。始终只捕获实际可以抛出的具体异常。
 ( 1, '20,20,88', PAY, 10, true )
Selection Error: java.lang.NullPointerException
java.lang.NullPointerException
    at Game.Game.loadNodesFromDatabase(Game.java:177)
    at Game.Game.<init>(Game.java:31)
    at Test.GameLoadDatabseTest.loadNodesTest(GameLoadDatabseTest.java:30)
    at Program.main(Program.java:39)
Exception in thread "main" java.lang.NullPointerException
    at Test.GameLoadDatabseTest.loadNodesTest(GameLoadDatabseTest.java:32)
    at Program.main(Program.java:39)