Solved

add(Component) method question

Posted on 2001-06-06
10
195 Views
Last Modified: 2010-03-31

In the init() method, I use add(myLabel). If myLabel is null, we get a nullPointer exception. Where is the method that throws that exception? I could not find it in the Component class where the add methods are written.
0
Comment
Question by:HanRui
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 3
10 Comments
 
LVL 92

Expert Comment

by:objects
ID: 6161950
It's in the Applet class or one of it descendants, probably Container.
Why do you need to know?

What you are doing is invalid and that is why you are getting an exception.
0
 

Author Comment

by:HanRui
ID: 6161967
I looked in the classes all the way up the hierarchy, and there is no add method that is defined with "throws exception." I want to understand this so that I can communicate it to students. If an exception is reported, there must be a method somewhere that throws it.
0
 
LVL 92

Expert Comment

by:objects
ID: 6161999
Hang on I'll find it for you.
0
Optimize your web performance

What's in the eBook?
- Full list of reasons for poor performance
- Ultimate measures to speed things up
- Primary web monitoring types
- KPIs you should be monitoring in order to increase your ROI

 
LVL 92

Expert Comment

by:objects
ID: 6162006
Sorry, it's too early in the morning.
The exception won't be throw explicitly, it'll be thrown when you try and do something like this:

Object a = null;
String s = a.toString()  // This will cause a NPE to be thrown

I'll find the spot in the code where its occurring for you.
0
 
LVL 92

Accepted Solution

by:
objects earned 100 total points
ID: 6162009
From the NPE javadoc:

Thrown when an application attempts to use null in a case where an object is required. These include:

- Calling the instance method of a null object.
- Accessing or modifying the field of a null object.
- Taking the length of null as if it were an array.
- Accessing or modifying the slots of null as if it were an array.
- Throwing null as if it were a Throwable value.
0
 
LVL 92

Expert Comment

by:objects
ID: 6162014
It's thrown from the addImpl method in the Container class.

Another easy way to find where an exception originated is to use the printStackTrace() method of the Exception class.

eg.

tr
{
   ....
}
catch (Exception e)
{
   e.printStackTrace();
}
0
 

Author Comment

by:HanRui
ID: 6162019
Ok. I still want to see a method somewhere with throws exception in it. The priniciples that you listed make sense, but the more general principle is that for an exception to be thrown at all, there must be some method somewhere with "throws exception" as part of its definition.

java.lang.NullPointerException
  at java.awt.Container.addImpl(Compiled Code)
  at java.awt.Container.add(Compiled Code)
  at Test1.init(Compiled Code)
* at netscape.applet.DerivedAppletFrame$InitAppletEvent.dispatch(Compiled Code)
  at java.awt.EventDispatchThread$EventPump.dispatchEvents(Compiled Code)
  at java.awt.EventDispatchThread.run(Compiled Code)
  at netscape.applet.DerivedAppletFrame$AppletEventDispatchThread.run(Compiled Code)

The above is the message output in the Java console. The addImpl method does not throw an exception. I did see an IllegalArgumentException in the Container class, but no method with throws exception.
0
 
LVL 7

Expert Comment

by:Igor Bazarny
ID: 6162031
Hi,

There is no need to declare 'throws Exception' to throw NulPointerException. Exception derived from RuntimeException end Error can be thrown from anywhere, no matter what throws clause says.
add() is method family of Container (not Component) and real implementation is in addImpl(). It's no wonder that it throws NullPointerException when you add null component. In fact, it prevents you from more serious problems--ability to add null component would possibly cause NullPointerException far from call to add().

You would better find a Label to add. And watch out, from my experience, NullPointerException is most often exception, and most helpful--you can tell from stacktrace where you try to use uninitialized reference. Much better than simply fall with 'General Protection Fault' message.

Regards,
Igor Bazarny
Brainbench MVP for Java 1
www.brainbench.com
0
 

Author Comment

by:HanRui
ID: 6162049
Thank you. I already closed the question, but I appreciate your feedback.
0
 
LVL 92

Expert Comment

by:objects
ID: 6162054
The exception is thrown by the JVM as a result of calling a method on a null object reference.

Thanks for the points :)
0

Featured Post

Online Training Solution

Drastically shorten your training time with WalkMe's advanced online training solution that Guides your trainees to action. Forget about retraining and skyrocket knowledge retention rates.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

An old method to applying the Singleton pattern in your Java code is to check if a static instance, defined in the same class that needs to be instantiated once and only once, is null and then create a new instance; otherwise, the pre-existing insta…
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
Viewers learn how to read error messages and identify possible mistakes that could cause hours of frustration. Coding is as much about debugging your code as it is about writing it. Define Error Message: Line Numbers: Type of Error: Break Down…
This tutorial will introduce the viewer to VisualVM for the Java platform application. This video explains an example program and covers the Overview, Monitor, and Heap Dump tabs.
Suggested Courses

623 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question