创建新的XMLGregorianCalendar时忽略DatatypeConfigurationException

时间:2011-08-04 19:53:11

标签: java exception-handling jax-ws

在创建像这样的新XMLGregorianCalendar实例时,我是否真的需要处理DatatypeConfigurationException例外,还是可以安全地抑制它?

try {
    header.setRequestDateTime(
                DatatypeFactory.newInstance().newXMLGregorianCalendar(
                        new GregorianCalendar()));
} catch (DatatypeConfigurationException e) {
    // pass
}

我对the documentation的解释和一些粗略的逻辑说,除非我给它一些不好的输入,否则这不会引发异常。在上面的例子中,情况并非如此。以下是JavaDocs对此的评价:

  

如果DATATYPEFACTORY_PROPERTY指定的系统属性,   “javax.xml.datatype.DatatypeFactory”,存在,名称为的类   属性的值被实例化。在期间抛出任何异常   实例化过程被包装为   DatatypeConfigurationException

我是否正确地认为我可以安全地抑制此检查异常?

2 个答案:

答案 0 :(得分:5)

类型DatatypeConfigurationException的例外情况可能会在静态方法调用中

DataTypeFatory factory = DataTypeFactory.newInstance();

因此,您只需要一次。但是你应该一次,否则就无法创建XMLGregorianCalendar实例。

清楚地说出来电话

XMLGregorianCalendar xmlCal = factory.newXMLGregorianCalendar(new GregorianCalendar());
在创建DatatypeConfigurationException个实例的XML表示时,

从不会抛出GregorianCalendar,因此您不必对其进行处理。 - 从后者调用Java SE API开始,只能发生NullPointerException

答案 1 :(得分:0)

如果您选择此例外,则设置标头请求时间。在这方面,是的,这是一个严重的例外。您无法生成日期和时间实例的XML表示。

另一方面,您的程序不会崩溃。它不是关键虚拟机错误。但你必须处理它。您将无法在运行时修复它。您必须相应地设置服务器 VM 环境。