Re: NPE in creating a SQLException

Поиск
Список
Период
Сортировка
От Scot P. Floess
Тема Re: NPE in creating a SQLException
Дата
Msg-id 5331495.1059493858253.JavaMail.nobody@wamui01.slb.atl.earthlink.net
обсуждение исходный текст
Ответ на NPE in creating a SQLException  (Peter Royal <proyal@pace2020.com>)
Ответы Re: NPE in creating a SQLException  (Peter Royal <proyal@pace2020.com>)
Список 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
beingset to instances there could be issue (ie NullPointerException).  However, assuming this to be true, one would
hopethe 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@pace2020.com>
Sent: 07/29/03 11:26 AM
To: "Scot P. Floess" <floess@mindspring.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

>

В списке pgsql-jdbc по дате отправления:

Предыдущее
От: Peter Royal
Дата:
Сообщение: Re: NPE in creating a SQLException
Следующее
От: Peter Royal
Дата:
Сообщение: Re: NPE in creating a SQLException