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



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

这不是mysql异常,而是Java异常。在捕获体中,添加以下行:

e.printStackTrace();

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

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

每当您对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(举个例子:

导致原因:java.lang.NullPointerException在android.content.ContextWrapper.getPackageName(ContextWrapper.java:127(在android.content.ComponentName.(ComponentName.java:75(在android.content.Interent.(Intent.java:3301(网址:com.example.va.datasender.MainActivity.(MainActivity.java:36(

第1行:告诉异常类型-在本例中为NullPointerException第2行:它告诉Java文件的名称和确切的行号。转到行号并检查对象引用上的所有方法调用:例如

obj.someMethod();
  1. 当obj引用可能为Null时,为程序查找可能的情况。如果你有困难,只需检查要检测的对象是否为null,比如
if(obj == null){
  System.out.println("obj is null");
  }

如何避免NullPointer

请看这里一个好的教程。

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

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

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

e.printStackTrace();

将准确地告诉您哪一行具有NullPointerException

最新更新