gpt4 book ai didi

jaxb - XmlJavaTypeAdapter 抛出用户定义的异常

转载 作者:行者123 更新时间:2023-12-05 01:03:09 26 4
gpt4 key购买 nike

有没有办法在 XmlAdapter 中抛出用户定义的异常并在 JAXB 编码/解码时捕获它们?我的意思是,我可以抛出自己的异常,但 JAXB 只是忽略此异常并抛出他自己的异常,我无法从中获取异常消息或异常对象。

try {
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
jaxbUnmarshaller.unmarshal(inputStream);
}
catch (UserDefinedException e) {
// Do something.
}

很抱歉没有发布 JAXB 抛出的正确异常而不是我的异常。此刻,我无法获取代码。目前我正在使用 JAXB-RI,但我使用了 EclipseLink MoXY 并遇到了这个问题。

当我能够拿到代码时,我会发布额外的数据。但在那之前,也许有人知道我在说什么。一些正确使用 XmlAdapter 的代码示例也很棒。

谢谢。

最佳答案

JAXB (JSR-222) 的期望值实现是它抛出一个 JAXBException .这意味着在 XmlAdapter 之类的东西中抛出的任何异常最终会被包裹起来。您可能会使用有状态的 XmlAdapter处理这个用例:

Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
MyXmlAdpater myXmlAdapter = new MyXmlAdapter();
jaxbUnmarshaller.setAdatper(myXmlAdapter);
jaxbUnmarshaller.unmarshal(inputStream);
if(myXmlAdapter.hasException() {
// Do something.
}

使用有状态 XmlAdapter 的示例看:
  • http://blog.bdoughan.com/2011/09/mixing-nesting-and-references-with.html
  • 关于jaxb - XmlJavaTypeAdapter 抛出用户定义的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10316246/

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