如何找到空指针异常的位置

时间:2014-06-12 14:38:31

标签: java mysql

以下代码显示了一个空指针异常。但我无法找到它在哪里。这是我的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);
        }

4 个答案:

答案 0 :(得分:3)

这不是mysql异常,而是Java异常。在catch体内,添加以下行:

e.printStackTrace();

这将打印在表示其调用堆栈的列表中抛出异常的行。

您可以在此处找到更多详细信息:printStackTrace

答案 1 :(得分:0)

您可以在代码中设置断点,然后逐行检查变量值。

设置换行符 要设置换行符,请单击要设置断点的行的左边距,或单击该行并按Ctrl-F8。 要删除断点,请单击该行的左边距或单击该行,然后按Ctrl-F8。 如果要自定义换行符,可以通过“断点”窗口进行自定义。 选择窗口|调试|断点或按Alt-Shift-5。在“断点”窗口中, 右键单击断点,然后选择“自定义”

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

答案 2 :(得分:0)

e.printStackTrace();

将准确告诉您哪一行有NullPointerException

答案 3 :(得分:0)

每当在null对象引用上调用方法时,都会发生NullPointerException。例如比如说,在你的例子中

jTable3.getModel()

在运行时,对象引用jTable3未初始化;这意味着,上面的调用更像是

<null>.getModel()

由于null引用无法处理方法调用(实际的期望的对象不存在);所以发生空指针异常。

如何检测Nullpointer?

  1. 在日志文件/控制台中打印异常。为此,在代码中使用try-catch块,如

    try{
       // your code, which may throw nullpointer.
        }catch(Exception e) { // Just catch all exception
       e.printStackTrace();
     }
    
  2. 检查堆栈跟踪(这对于任何类型的异常都很常见,而不仅仅是Nullpointer) 让我们举一个例子:

  3.   

    引起:java.lang.NullPointerException        在android.content.ContextWrapper.getPackageName(ContextWrapper.java:127)        在android.content.ComponentName。(ComponentName.java:75)        在android.content.Intent。(Intent.java:3301)        在com.example.va.datasender.MainActivity。(MainActivity.java:36)

    第1行:告诉异常类型 - 在这种情况下为NullPointerException 第2行:它告诉Java文件的名称和确切的行号。 转到行号并检查对象引用上的所有方法调用: e.g。

    obj.someMethod();
    
    1. 当obj引用可能为Null时,查找程序的可能案例。如果您遇到困难,只需检查要检测的对象的空值,例如
    2. if(obj == null){
        System.out.println("obj is null");
        }
      

      如何避免NullPointer?

      See Here一个好的教程。

相关问题