在创建像这样的新XMLGregorianCalendar
实例时,我是否真的需要处理DatatypeConfigurationException
例外,还是可以安全地抑制它?
try {
header.setRequestDateTime(
DatatypeFactory.newInstance().newXMLGregorianCalendar(
new GregorianCalendar()));
} catch (DatatypeConfigurationException e) {
// pass
}
我对the documentation的解释和一些粗略的逻辑说,除非我给它一些不好的输入,否则这不会引发异常。在上面的例子中,情况并非如此。以下是JavaDocs对此的评价:
如果DATATYPEFACTORY_PROPERTY指定的系统属性, “javax.xml.datatype.DatatypeFactory”,存在,名称为的类 属性的值被实例化。在期间抛出任何异常 实例化过程被包装为 DatatypeConfigurationException
我是否正确地认为我可以安全地抑制此检查异常?
答案 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 环境。