Метод JAXB XMLAdapter не генерирует исключение

Я использую JAXB XMLadapter для маршалинга и демаршалирования логических значений. XML-файл приложения также будет доступен для приложения C#. Мы должны проверить этот файл XML, и это делается с помощью XSD. Приложение C# записывает значение "True" для логических узлов. Но то же самое проверяется нашим XSD, поскольку он допускает только «истина/ложь» или «1/0». Таким образом, мы сохранили String для логических значений в XSD, и эта строка будет проверена XMLAdapter для маршалинга и демаршалирования на нашей стороне. Адаптер XML выглядит следующим образом:

public class BooleanAdapter extends XmlAdapter<String, Boolean> {

    @Override
    public Boolean unmarshal(String v) throws Exception {

        if(v.equalsIgnoreCase("true") || v.equals("1")) {
            return true;
        } else if(v.equalsIgnoreCase("false") || v.equals("0")) {
            return false;
        } else {
            throw new Exception("Boolean Value from XML File is Wrong.");
        }
    }

    @Override
    public String marshal(Boolean v) throws Exception {
        return v.toString();        
    }
}

Вышеприведенный код работает в нормальных условиях, но когда из файла xml считываются недопустимые данные (например: "abcd" или ""), то "throw new Exception();" не распространяется, и процесс Unmarshal переходит к чтению следующего узла. Я хочу, чтобы приложение останавливалось, как только возникает исключение. Кажется, мое исключение съедают. Любая помощь горячо приветствуется.

Как решить эту проблему?

16
задан buræquete 6 August 2018 в 21:58
поделиться