0

在以下代码中:

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);
    }

,有没有办法使用不会抛出任何异常或需要任何异常处理的代码将“故障”字符串转换为 XML 对象?

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

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

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

希望我已经说清楚了。

4

1 回答 1

1

如果解析器无法解析 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 ...

我不知道这是否是“无检查异常”,

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

于 2013-05-21T06:10:08.743 回答