Re: NPE in creating a SQLException

From: "Scot P(dot) Floess" <floess(at)mindspring(dot)com>
To: Peter Royal <proyal(at)pace2020(dot)com>, "Scot P(dot) Floess" <floess(at)mindspring(dot)com>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: NPE in creating a SQLException
Date: 2003-07-29 15:50:08
Message-ID: 5331495.1059493858253.JavaMail.nobody@wamui01.slb.atl.earthlink.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Peter:

Does your class have a toString() method? You mention that this is occurring in a constructor. Certainly if your toString() has object members being printed in such a way as method calls are performed on those object prior to their being set to instances there could be issue (ie NullPointerException). However, assuming this to be true, one would hope the stack trace would indicate the toString() method.

Have you tried to evaluate "this" first...ie if ( this == null ) { do something }

If tried the following:

public final class NullTest
{
public NullTest ()
{
System.out.println ( this == null );
}

public static void main ( String args[] )
{
NullTest nt = new NullTest ();
}
}

I get "false" printed.

I would be very suprised if "this" ever equaled null...

Can you send the whole class source in question?

Scot

-------Original Message-------
From: Peter Royal <proyal(at)pace2020(dot)com>
Sent: 07/29/03 11:26 AM
To: "Scot P. Floess" <floess(at)mindspring(dot)com>
Subject: Re: [JDBC] NPE in creating a SQLException

>
> On Tuesday, July 29, 2003, at 11:17 AM, Scot P. Floess wrote:
> Can you send more code? Is "s" initialized in your synchronized
> block? You might print s before the synchronized block to verify...
> It could be your null pointer is there...

Sorry I didn't include more.. This is with JVM 1.4.1, so all the java.*
stuff is the standard source for that.

>>
>> I'm getting the below NPE:
>
> java.lang.NullPointerException
> at java.io.PrintWriter.write(PrintWriter.java:247)
> at java.io.PrintWriter.print(PrintWriter.java:392)
> at java.io.PrintWriter.println(PrintWriter.java:529)
> at java.lang.Throwable.printStackTrace(Throwable.java:509)
> at java.sql.SQLException.<init>(SQLException.java:103)
> at
> org.postgresql.util.PSQLException.<init>(PSQLException.java:19)
> at
> org.postgresql.jdbc1.AbstractJdbc1Connection.ExecSQL(AbstractJdbc1Conne
> c
> tion.java:480)
> at
> org.postgresql.jdbc1.AbstractJdbc1Connection.ExecSQL(AbstractJdbc1Conne
> c
> tion.java:461)
> at
> org.postgresql.jdbc1.AbstractJdbc1Connection.setAutoCommit(AbstractJdbc
> 1
> Connection.java:942)
>
> The offense starts here (SQLException:103)
>
> if (!(this instanceof SQLWarning)) {
> if (DriverManager.getLogWriter() != null) {
> printStackTrace(DriverManager.getLogWriter());
> }
> }
>
> And then continues on to (Throwable:509)
>
> synchronized (s) {
> s.println(this);
> StackTraceElement[] trace = getOurStackTrace();

Which is fully:

public void printStackTrace(PrintWriter s) {
synchronized (s) {
s.println(this);
StackTraceElement[] trace = getOurStackTrace();
for (int i=0; i < trace.length; i++)
s.println("\tat " + trace[i]);

Throwable ourCause = getCause();
if (ourCause != null)
ourCause.printStackTraceAsCause(s, trace);
}
}

> It is the "s.println(this)" that is causing errors... All of this is
> happening in the constructor, so I guess that is why 'this' is null?
> I'm not 100% sure and pretty confused by it all :/

But 'this' is null.... which is very weird to me.
-pete

>

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Peter Royal 2003-07-29 16:16:27 Re: NPE in creating a SQLException
Previous Message Peter Royal 2003-07-29 15:26:28 Re: NPE in creating a SQLException