下面的代码显示了一个空指针异常。但我找不到它在哪里。这是我的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
jTable3.getModel()
在运行时,对象引用jTable3
未初始化;这意味着,上面的呼叫更像
<null>.getModel()
由于null引用无法处理方法调用(实际的预期的对象不存在(;因此出现空指针异常。
如何检测Nullpointer
在日志文件/控制台中打印异常。为此,在类似的代码中使用try-catch块
try{ // your code, which may throw nullpointer. }catch(Exception e) { // Just catch all exception e.printStackTrace(); }
检查堆栈跟踪(这对于任何类型的异常都很常见,而不仅仅是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();
- 当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