2011-10-07 8 views
18

मैं कुछ यूनिट परीक्षण लिख रहा हूं जो जानबूझकर जावा डोम एक्सएमएल पार्सर को खराब तारों को पार कर रहे हैं।System.err (stderr) पर XML पार्सिंग त्रुटियों को कैसे लिखा जा सकता है?

उदा।

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = dbf.newDocumentBuilder(); 

String message_xml = ""; // Empty string, not valid XML!!! 
ByteArrayInputStream input = new ByteArrayInputStream(message_xml.getBytes()); 
Document doc = db.parse(input); 

यह सही ढंग से एक SAXParseException (जो कि मेरी इकाई परीक्षण की उम्मीद है) फेंक रहा है। लेकिन यह भी जावा कंसोल में System.err (stderr) के लिए एक संदेश लिख रहा है:

[Fatal Error] :1:1: Premature end of file. 

वहाँ XML पार्सर कॉन्फ़िगर करने के लिए नहीं stderr करने के लिए लिखने के लिए कोई तरीका है?

मैं जावा 1.6SE का उपयोग कर रहा हूं।

+0

पैकेज के वालों को विन्यस्त का प्रयास करें? लेकिन यह क्यों मायने रखता है - वे यूनिट परीक्षण हैं। –

उत्तर

24

स्थापित अपने स्वयं के ErrorHandler:

db.setErrorHandler(new ErrorHandler() { 
    @Override 
    public void warning(SAXParseException e) throws SAXException { 
     ; 
    } 

    @Override 
    public void fatalError(SAXParseException e) throws SAXException { 
     throw e; 
    } 

    @Override 
    public void error(SAXParseException e) throws SAXException { 
     throw e; 
    } 
}); 
संबंधित मुद्दे