gpt4 book ai didi

java - 防止代码抛出 XML 异常

转载 作者:行者123 更新时间:2023-12-01 14:33:42 25 4
gpt4 key购买 nike

在下面的代码中:

try{
....
}

catch(Exception e)
{
logger.error("Exception caught in method: \n");
logger.error(e.getMessage());
String fault = "<Fault><FaultCode>" + e.getClass().getName() + "</FaultCode><FaultDescription>" + e.getMessage() + "</FaultDescription></Fault>";
return XmlObject.Factory.parse(fault);
}

,有没有一种方法可以使用不会引发任何异常或不需要任何异常处理的代码将“fault”字符串转换为 XML 对象?

基本上,我们需要在成功和失败场景中返回一个 XML 对象,而不需要使用任何 throws 子句的方法。这就是原因,我们从 catch 中删除了主流程中可能发生的所有特定异常情况,例如 ParserConfiguration、IOExceptoin、XmlException 等,并保留了通用异常情况并硬编码了一个字符串来收集所需的错误信息并作为 XML 对象传回。但是,即使使用最少的编码,parse() 方法中也有可能出现 XmlException。任何其他方式,例如从 errorConfig 文件读取或创建单独的 XML 对象,都会带来更多需要处理的异常。

那么,只想知道是否可以开发这样的代码,即返回 XML 的无异常 catch block ?或者,如果有人可以推荐任何其他方法也可以。

仅供引用:主要代码基本上转换 XML 或通过附加更多标签来丰富它并返回它。

希望我已经说清楚了。

最佳答案

如果解析器无法解析 XML(并因异常而中止),那么您将从哪里获取 XML 对象?

如果您认为在您的操作流程中不会真正发生 XML 异常(编译器当然无法保证),那么就假设这一点,捕获异常,记录“哎呀,这根本不应该发生”,重新抛出 RuntimeException 并且不再担心它(它永远不会发生,对吧?)

String fault = "<Fault><FaultCode>" + e.getClass().getName() + 
"</FaultCode> <FaultDescription>" + e.getMessage()
+ "</FaultDescription></Fault>";
return XmlObject.Factory.parse(fault);

我认为(如果该错误消息不需要转义),您可以确定这永远不会失败。所以这符合上面的模式。

我不知道这是否是“无检查异常”,但您可以放弃 XML 字符串并重新解析它并以编程方式构造 DOM。

  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
Document doc = dbf.newDocumentBuilder().newDocument();
Element rootElement = doc.createElement("fault");
// etc ...

I don't know if that is "checked-exception-free",

查看 Javadocs:没有。各种配置异常。 :-(

关于java - 防止代码抛出 XML 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16663202/

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