3

我收到了 java.lang.NullPointerException,但我不知道为什么。我正在尝试使用 try-catch 块,但它不起作用。谁能解释这个块有什么问题?

public PriceDataAdder(Connection conn) {
        try {
            this.conn = conn;
            statement = conn.prepareStatement("INSERT INTO `blah` (a,b,c,d,e,f,g,h,`i`,j) VALUE( ?,?,?,?,?,?,?,?,?,? )");
        } catch (SQLException ex) {
            Logger.getLogger(PriceDataAdder.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
4

3 回答 3

6

尝试捕捉Exception而不是SQLException. 它将起作用,因为它Exception是所有异常的超类,并且通过捕获它,您可以捕获所有可能在try块内生成的异常。

无论如何,问题可能是由于在conn被调用null的地方引起的prepareStatement(),首先确保您传递了调用ConnectionPriceDataAdder方法的正确实例。

还请查看正在生成的日志,该Logger对象应该得到很好的利用。

于 2012-12-08T19:38:15.493 回答
4

您只是在捕获SQLException对象,而NullPointerException不是SQLException. 您也可以插入NullPointerException|以捕获它们;请参阅http://docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html

于 2012-12-08T19:38:26.167 回答
2

You should manage your exception like the below code

try {
    this.conn = conn;
    statement = conn.prepareStatement("INSERT INTO `blah` (a,b,c,d,e,f,g,h,`i`,j) VALUE( ?,?,?,?,?,?,?,?,?,? )");
} catch (SQLException ex) {
    Logger.getLogger(PriceDataAdder.class.getName()).log(Level.SEVERE, null, ex);
    } catch (NullPointerException ex) {
        Logger.getLogger(PriceDataAdder.class.getName()).log(Level.SEVERE, null, ex);
    } catch (Exception ex) {
        Logger.getLogger(PriceDataAdder.class.getName()).log(Level.SEVERE, null, ex);
    }
于 2012-12-08T19:42:36.737 回答