2013-04-29 78 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

相關問題