簡體   English   中英

如何處理Java Applet中的空指針異常?

[英]How do I handle null pointer exception in java applet?

我在我的機器上運行一個簡單的applet。請注意,在執行applet時,嘗試運行該applet時會發生“空指針異常”錯誤。 顯示以下代碼

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.math.*;

<applet code="s09_04" width=300 height=50>
</applet>

public class s09_04 extends Applet
{

  CardLayout c1;
  Panel p;
  Label l1;
  Label l2;
  Label l3;
  Label l4;
  TextField t1;
  TextField t2;
  TextField t3;
  TextField t4;

  public void start()
  {

  }

  public void init()
  {
    c1 = new CardLayout();
    l1 = new Label("Enter Name :");
    l2 = new Label("Enter Place :");
    l3 = new Label("Address :");
    l4 = new Label("Pin :670571 ");
    t1 = new TextField(20);
    p = new Panel();
    p.setLayout(c1);
    add(l1);
    add(t1);
    add(l2);
    add(t2);
    add(l3);
    add(t3);
    add(l4);
    add(t4);
  }

  public void paint(Graphics g)
  {

  }
}

使用的命令是

javac s09_04.java

appletviewer s09_04.java。

終端輸出:

java.lang.NullPointerException
    at java.awt.Container.addImpl(Container.java:1037)
    at java.awt.Container.add(Container.java:373)
    at s09_04.init(s09_04.java:32)
    at java.lang.Thread.run(Thread.java:701)

我的問題是applet無法啟動的最可能原因是什么?何時發生空指針異常?導致空指針異常的原因是什么?我應該在我的代碼中進行哪些更改,以使代碼平穩運行而不會任何錯誤。代碼中的任何建議/更改將不勝感激。請注意,我正在linux中運行此代碼。謝謝...

因為TextField t2, t3 and t4; 未初始化。 解決

t2=new TextField(20);
t3=new TextField(20);
t4=new TextField(20);

像t1

applet無法啟動的最可能原因??

Applet文檔說要向Container添加一個組件,應該對其進行初始化。

此處,在代碼中,未初始化t2, t3, t4 ,這將引發NullPointerException

空指針異常何時會發生???

這是一個非常大的話題,而且只是一行,

當您嘗試訪問未初始化的對象時,它將引發NPE(請參見示例)

Object o = null;
// o is not initialised.
o.wait();

我應該在代碼中進行哪些更改,以便代碼順利運行而沒有任何錯誤

初始化要添加到Applet的所有組件。

t2=new TextField(20);
t3=new TextField(20);
t4=new TextField(20);

您是聲明TextField TextField t2;TextField t3;TextField t4; 但不初始化init()初始化t2,t3,t4 您正在添加add(t2);add(t3);add(t4); //Here The Exception add(t2);add(t3);add(t4); //Here The Exception

         t2=new TextField(20);
         t3=new TextField(20);
         t3=new TextField(20);

但是,如果您不初始化文本字段,則意味着沒有給它任何空間,它將如何存儲數據?

所以試試看

t2=new TextField(size);
t3=new TextField(size);
t3=new TextField(size);

我會幫你的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM