繁体   English   中英

try-catch块不能抑制java.lang.NullPointerException

[英]try-catch block not suppressing java.lang.NullPointerException

我收到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);
        }
    }

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

无论如何,问题可能是因为在调用prepareStatement() connnull ,首先要确保在调用PriceDataAdder方法时传递正确的Connection实例。

另外,请查看正在生成的日志,应该充分利用Logger对象。

您只捕获SQLException对象, NullPointerException不是SQLException的子类。 您可以插入NullPointerException| 抓住那些; 请参阅http://docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html

您应该像下面的代码一样管理您的异常

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);
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM