2013-04-29 77 views
1

这里是一个代码段JOptionPane中给出了一个NullPointerException异常,并且不会显示

private void viewscriptJButtonActionPerformed(ActionEvent evt){             

    try{ 
     for (int j = 0; j <= i; j++) { 
      scriptPane.setText(queryList.get(j).toString() + "\n"); 
     } 
    } 
    catch(Exception e) 
    { 
     JOptionPane.showMessageDialog(this,"error:\n"+e.getMessage().toString() + "\n" + e.getCause().toString() ,"Error",JOptionPane.ERROR_MESSAGE); 
    } 
} 

catch块中的代码总是给人一种NullPointerException。这只是一个参考。每当需要捕获异常时,每次按钮单击事件都会出现问题。 任何帮助。

+0

我猜测失踪的'''''''''''只是一个复制粘贴错误? – chrsblck 2013-04-29 21:17:59

+1

在catch块中添加e.printStackTrace(),您将得到一个堆栈跟踪,确切指示发生NullPointerException的位置。 – 2013-04-29 21:18:10

+0

为了更好地为您提供帮助,请发布[SSCCE](http://sscce.org) – 2013-04-29 22:46:14

回答

0

你会发现,Exception#getCause()回报null时异常的原因是它本身,因此您e.getCause().toString()将抛出一个NullPointerException。 getCause方法通常用于在将它们链接在一起时查找根异常。

printStackTrace()将打印出整个堆栈跟踪异常的,允许更轻松地调试,但修复这个错误,只是改变你的JOptionPane声明:

JOptionPane.showMessageDialog(this,"error:\n"+e.getMessage().toString(),"Error",JOptionPane.ERROR_MESSAGE); 

此外,您可能希望看到this

+0

感谢您的帮助。有效! – Ritesh 2013-04-30 05:33:25

相关问题