其實我從來沒有像這樣的問題,但這次它讓我感到不舒服。java程序崩潰時找不到合適的匹配
該程序從用戶處獲取文本字段,並從PostgreSQL的SQL中搜索正確的匹配。它工作正常,但是當我輸入不在數據庫中的東西時,程序崩潰或發生了什麼,我的意思是它沒有響應任何事情。如果這裏可能有幫助的是代碼的相關部分:
public void actionPerformed(ActionEvent e)
{
String path = null;
JButton clicked = (JButton) e.getSource();
if (clicked == loadButton) {
try {
PreparedStatement st = connect.prepareStatement("select * from databank where code=?");
st.setString(1, field.get(0).getText());
ResultSet rs = st.executeQuery();
while (rs.next()) {
for (int i = 0; i < field.size(); i++) {
if (i < 7)
field.get(i).setText(rs.getString(i + 1));
else if (i > 6 && i < 10)
field.get(i).setText(Double.toString(rs.getDouble(i + 1)));
else if (i > 9 && i < 14)
field.get(i).setText(Integer.toString(rs.getInt(i + 1)));
else if (i > 13)
field.get(i).setText(rs.getString(i + 1));
path = rs.getString(15);
}
}
rs.close();
} catch (SQLException ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(null, "Error Code = 0020");
} finally {
imageHold.setIcon(new ImageIcon(path));
SwingUtilities.updateComponentTreeUI(frame);
SwingUtilities.updateComponentTreeUI(imageHold);
}
}
}
我在想什麼?我該如何解決這個問題?
編輯:
這是堆棧跟蹤。
Uncaught error fetching image:
java.lang.NullPointerException
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileInputStream.<init>(FileInputStream.java:101)
at sun.awt.image.FileImageSource.getDecoder(FileImageSource.java:53)
at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:263)
at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:205)
at sun.awt.image.ImageFetcher.run(ImageFetcher.java:169)
任何堆棧跟蹤? – roeygol
並且還指示哪條線路導致異常。請儘量使這個問題儘可能完整和可回答。 –
'updateComponentTreeUI'沒有做你認爲的事情,應該永遠不要用它來執行UI狀態的基本更新,效率很低 – MadProgrammer