gpt4 book ai didi

java - 使用java异常进行条件检查

转载 作者:行者123 更新时间:2023-12-02 02:45:04 25 4
gpt4 key购买 nike

我正在我的 grails 应用程序中创建一个 xml 文件 uploader 。有两种类型的文件:Ap 和 ApWithVendor。我想自动检测文件类型并使用 SAXParser 将 xml 转换为正确的对象。

我一直在做的是,当 sax 解析器无法使用 endElement 方法在第一个 Ap 对象中找到 qName 匹配时,抛出异常。然后我捕获异常并尝试 ApWithVendor 对象。

我的问题是,有没有更好的方法可以在不进行异常情况检查的情况下执行此操作?

代码示例

        try {
System.out.println("ApBatch");
Batch<ApBatchEntry> batch = new ApBatchConverter().convertFromXML(new String(xmlDocument, StandardCharsets.UTF_8));

byte[] xml = new ApBatchConverter().convertToXML(batch, true);
String xmlString = new String(xml, StandardCharsets.UTF_8);
System.out.println(xmlString);

errors = client.validateApBatch(batch);
if (!errors.isEmpty()) {
throw new BatchValidationException(errors);
}

return;
} catch (BatchConverterException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

try {
System.out.println("ApVendorBatch");
Batch<ApWithVendorBatchEntry> batch = new ApWithVendorBatchConverter().convertFromXML(new String(xmlDocument, StandardCharsets.UTF_8));

byte[] xml = new ApWithVendorBatchConverter().convertToXML(batch, true);
String xmlString = new String(xml, StandardCharsets.UTF_8);
System.out.println(xmlString);

errors = client.validateApWithVendorBatch(batch);
if (!errors.isEmpty()) {
throw new BatchValidationException(errors);
}

return;
} catch (BatchConverterException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

最佳答案

您始终可以迭代 XML 中的节点,并根据特定节点缺失(或存在 - 或具有特定值)这一事实做出决策(请参阅 DocumentBuilderDocument 类)

在 99% 的情况下使用异常进行决策或流程控制被认为是不好的做法。

关于java - 使用java异常进行条件检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44721629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com