I have a curious problem. More academic at this point than anything else.
I am writing a login servlet.
We are required by our client to not allow the user / customer to see any exceptions at all. Users need simply be redirected to a 'temporary difficulties' html page.
So, in addition to other checks, we've put in a method-wide try - catch in the doPost method that logs the error and redirects the user in case something untoward occurs.
Now, in updating and tweaking the code, I made an error in logic that was caught only in runtime. I was trying to call methods for an object before instantiation. No problem. It is now fixed.
But the question is, why was the runtime NullPointerException not caught? Why did it spit up to the browser level immediately? I even tried catching the NPE explicitly, to no effect.
Any thoughts on this?
I can post code snippets if anyone thinks them relevant.
From the Servlet 2.3 spec:
<!--The error-page element contains a mapping between an error code or exception type to the path of a resource in the web application -->
<!ELEMENT error-page ((error-code | exception-type), location) >
<!--The error-code contains an HTTP error code, ex: 404 -->
<!ELEMENT error-code (#PCDATA) >
<!--The exception-type contains a fully qualified class name of a Java exception type. -->
<!ELEMENT exception-type (#PCDATA) >
<!--The location element contains the location of the resource in the web application. -->
<!ELEMENT location (#PCDATA)>
[ May 31, 2002: Message edited by: Jessica Sant ]
It does not solve my academic question and it is also not usable because my servlet container, Macromedia's JRun, does not support the specs required for the error page functionality.
And, "L" (a name not in keeping with the JavaRanch custom by the way). Here's a code snippet. I hope it formats correctly and is readable.
[ May 31, 2002: Message edited by: Sanjay Anand ]
I have worked on JRun 4. Sometimes it gives exceptions like this and also ClassCastException for no bug in the code.
You need to shut down the servers and even the admin one and restart then through Windows Services. Then it will work fine.
I think its a bug in JRun container.
Same querries are unanswered in JRun user forum.
I would also like to know if there is any similar solution possible for EJB's. I have methods defined in EJB and after caching the exception i just need to show the users a generic error message instead of the actual one.