![](/img/trans.png)
[英]Android java.lang.NullPointerException inside try/catch
[英]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()
conn
为null
,首先要确保在调用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.