2014-06-12 57 views
0

下面的代碼顯示一個空指針異常。但我無法找到它在哪裏。這是我的sql數據庫。如何解決這個問題?如何找到空指針異常在哪裏

 try { 
      DefaultTableModel d=(DefaultTableModel) jTable3.getModel(); 
      for(int x=0;x<d.getRowCount();x++){ 
       double npu=Double.parseDouble(jTable3.getValueAt(x, 7).toString()); 
       double ns=Double.parseDouble(jTable3.getValueAt(x, 8).toString()); 
       double dis=Double.parseDouble(jTable3.getValueAt(x, 9).toString()); 
       int qty=Integer.parseInt(jTable3.getValueAt(x, 10).toString()); 
       JM.putdata("INSERT INTO stock VALUES('"+jTable3.getValueAt(x, 0).toString()+"','"+jTable3.getValueAt(x, 1).toString()+"','"+jTable3.getValueAt(x, 2).toString()+"','"+jTable3.getValueAt(x, 3).toString()+"','"+jTable3.getValueAt(x, 4).toString()+"','"+jTable3.getValueAt(x, 5).toString()+"','"+jTable3.getValueAt(x, 6).toString()+"','"+npu+"','"+ns+"','"+dis+"','"+qty+"','"+jTable3.getValueAt(x, 11).toString()+"')"); 
      } 
     } catch (Exception e) { 
      JOptionPane.showMessageDialog(rootPane, e, "ERROR", JOptionPane.ERROR_MESSAGE); 
     } 

回答

0

NullPointerException異常空對象引用。例如就是說,在你的例子

jTable3.getModel() 

在運行時,對象引用jTable3未初始化;這意味着,在上述呼叫更像

<null>.getModel() 

由於空引用不能處理方法調用(實際預期對象不存在);所以發生空指針異常。

如何檢測空指針?

  1. 在日誌文件/控制檯中打印異常。對於在代碼中使用try-catch塊像

    try{ 
        // your code, which may throw nullpointer. 
        }catch(Exception e) { // Just catch all exception 
        e.printStackTrace(); 
    } 
    
  2. 檢查堆棧跟蹤(這是很常見的任何類型的異常,而不僅僅是空指針) 讓我們舉個例子:

所致:在android.content.ComponentName在android.content.ContextWrapper.getPackageName(ContextWrapper.java:127) 顯示java.lang.NullPointerException (ComponentName.java:75) 在android.content.Intent(。 Intent.j ava:3301) at com.example.va.datasender.MainActivity。(MainActivity.java:36)

1號線:講述在這種情況下NullPointerException異常 2號線除外型 - :它告訴Java文件和確切行號的名稱。 轉到行號並檢查對象引用上的所有方法調用:

obj.someMethod(); 
  1. 尋找一個可能的情況下爲你的程序中,如果OBJ參考可能爲NULL。如果您有困難,請檢查待檢測對象的空,像
if(obj == null){ 
    System.out.println("obj is null"); 
    } 

如何避免空指針?

See Here一個很好的教程。

3

這不是一個mysql異常,而是一個Java異常。在卡位體,加入這一行:

e.printStackTrace(); 

這將打印在異常被拋出表示其調用堆棧列表中的行。

你可以在這裏找到更多的細節:printStackTrace

0

您可以在您的代碼中設置斷點,然後通過檢查你的行變量值線。

設置線條斷點 要設置線條斷點,請單擊想要設置斷點的線條的左邊距,或者單擊該線條並按下Ctrl-F8。 要刪除斷點,請單擊該行的左邊距或單擊該行並按Ctrl-F8。 如果要定製行斷點,可以通過斷點窗口完成。 選擇窗口|調試|斷點或按Alt-Shift-5。在斷點窗口, 右鍵單擊該斷點,然後選擇自定義

更多信息:https://netbeans.org/project_downloads/usersguide/nbfieldguide/Chapter5-Debugging.pdf

0
e.printStackTrace(); 

會告訴你到底是哪行有NullPointerException異常每當你調用一個方法時