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いるため、メソッドが呼び出された場所の正しいインスタンスを渡していることを確認することから始めます。nullprepareStatement()ConnectionPriceDataAdder

また、生成されているログも確認してください。そのLoggerオブジェクトを有効に活用する必要があります。

于 2012-12-08T19:38:15.493 に答える
4

SQLExceptionオブジェクトをキャッチするだけNullPointerExceptionで、のサブクラスではありませんSQLExceptionNullPointerException|それらをキャッチするために挿入することもできます。http://docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.htmlを参照してください。

于 2012-12-08T19:38:26.167 に答える
2

以下のコードのように例外を管理する必要があります

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 に答える