tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christopher Schultz <ch...@christopherschultz.net>
Subject [SFnOT]Re: How do I ........?
Date Thu, 16 Nov 2006 00:20:58 GMT
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Martin,

Wow. More drivel. SS and DS? I see you're familiar with x86 assembly. I
weep for you, Martin.

Martin Gainty wrote:
> This is one of those SS!=DS discussions which means that variables
> placed/alloc'ed on the stack are NOT the same as variables alloc'ed
> from heap so when using a variable which is  alloced  on the stack
> AND initialised to some known value (null) feel free to test that
> pre-allocated stack variable as with if(stack_variable == null)

Where to begin....

In Java, all reference types (which includes all object types as well as
arrays) are allocated on the heap. All. All all all.

All /references/ (those are the names that you give to them in your
functions, like "foo" are allocated on the stack. All. All all all.

Non reference types (also called primitives) may never have a null value
in Java. Never never never.

If a reference is equal to null, and you try to dereference it, you will
get a NPE.

The solution is simple: do not dereference null references. Duh!

> If you dont know how this variable is alloc'ed or you know that the
> variable is alloc'ed from heap use try / catch(NullPointerException
> npe)

The variable is always a reference variable because we're talking about
nulls. Reference types always go on the heap, therefore you are getting
heap allocation. The reference itself is always local, on the stack.

Catching NPE is just sloppy coding.

> to do otherwise you're risking your webapp causing 'an unhandled
> exception' when referencing a unalloc'ed variable..

There is no such operation as "referencing" a variable. Simply
mentioning a variable name in an expression (even if it is null) is not
enough to throw an NPE. You have to dereference it.

The definition of "dereference" is an exercise left to the reader, if
his eyes haven't bled so much he can no longer see, which is about where
I am.

Let's kill this thread. Dead thread dead.

- -chris

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFFW67q9CaO5/Lv0PARAi1tAJ4xqphcj0AdwpjFV8lj/RVnXpphhACfes+x
alSUKSwZFLIiMOL/9sDNNZU=
=7ZZy
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message