Как сообщить пользователю, что входная строка XML недействительна, не завершая программу в java?

Я читаю строки XML из файла и хочу продолжить чтение последующих строк, даже если одна из них была в недопустимом формате. Итак, как мне продолжить мою программу, когда неправильная строка XML дает фатальную ошибку?

Я пытался использовать обработку исключений, но все равно выдает фатальную ошибку, если XML неправильно отформатирован.

Document doc = null;
    try {
        doc = dBuilder.parse(xmlFile);
    }
    catch(Exception e){
        System.out.println(e);
        return;
    }

Вот как выглядит консоль: -

[Fatal Error] IP.xml:22:24: The element type "ValueDate" must be terminated by the matching end-tag "". org.xml.sax.SAXParseException; systemId: file:/D:/Selenium_Workspace/stubvirtualization/IP.xml; lineNumber: 22; columnNumber: 24; The element type "ValueDate" must be terminated by the matching end-tag "".

Хм, вы печатаете исключение, чего вы ожидали?

Federico klez Culloca 26.07.2019 10:44

Программа выводит сообщение об ошибке, но продолжает работать, не так ли?

Amongalen 26.07.2019 10:45

@FedericoklezCulloca, вторая строка - это «распечатанное исключение», прежде чем оно будет напечатано, оно уже дало [Неустранимая ошибка]

ABHILASHA 26.07.2019 10:56
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
206
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Часть [Fatal Error] — это просто сообщение журнала, не связанное с печатью исключения.

От вас ничего не требуется, вы можете просто игнорировать это и двигаться дальше.


У меня работает нормально...

test.xml:

<xml>
<sda
</xml>

основной метод:

public static void main(String[] args) throws IOException, ParserConfigurationException {

    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = factory.newDocumentBuilder();

    Document doc = null;
    try {
        doc = dBuilder.parse("test.xml");
    } catch (SAXException e) {
       // do some logging of your own or something
    }

    System.out.println("done");
}

Вывод на консоль

[Fatal Error] test.xml:3:1: Element type "sda" must be followed by either attribute specifications, ">" or "/>".
done

Другие вопросы по теме