2011-08-04 3 views
6

このような新しいXMLGregorianCalendarインスタンスを作成するときは、本当にDatatypeConfigurationException例外を処理する必要がありますか、それとも安全に抑制できますか?新しいXMLGregorianCalendarを作成するときにDatatypeConfigurationExceptionを無視する

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

マイthe documentationの解釈およびいくつかの大まかな論理が、私はそれにいくつかの不正な入力を与えない限り、これは本当に例外をスローしないだろうと言います。そして、それは上の例では当てはまりません。 、DATATYPEFACTORY_PROPERTYによって指定されたシステムプロパティ場合

「javax.xml.datatype.DatatypeFactory」、 プロパティの値の名前を持つクラスがインスタンス化され、存在している:ここでのJavaDocはそれについて言うことです。 インスタンス化プロセス中にスローされた例外は、 DatatypeConfigurationExceptionとしてラップされます。

私はこのチェック例外を安全に抑制できると考えていますか?

答えて

5

タイプDatatypeConfigurationExceptionの例外は、したがって、あなただけたら、それを処理するために持っているだけ静的メソッドでコール

DataTypeFatory factory = DataTypeFactory.newInstance(); 

が起こることがあります。しかし、に一度処理する必要があります。そうしないと、XMLGregorianCalendarインスタンスを作成できません。

明確に言えば、コール

XMLGregorianCalendar xmlCal = factory.newXMLGregorianCalendar(new GregorianCalendar()); 

決してDatatypeConfigurationExceptionをスローし、このようにあなたがあなたのGregorianCalendarインスタンスのXML表現を作成するときに、それを治療することはありません。 - 後者のコールのJava SE APIからは、NullPointerExceptionしか発生しない可能性があります。

+0

もっと慎重に読んだら、あなたが正しいと思います。意味は、はい、それは扱われる必要があるということです。 –

+2

なぜDataTypeFactory.newInstance()はDataTypeConfigurationExceptionをスローしますか? – IcedDante

0

この例外が表示されない場合、ではなく、がヘッダー要求時間を設定します。この点に関しては、はい、それは重大な例外です。日時インスタンスのXML表現は生成できません。

一方、あなたのプログラムはのクラッシュではありません。 重要なVMエラーではありません。しかし、あなたはそれに対処しなければなりません。実行時に修正することはできません。 サーバおよびVM環境に応じて設定する必要があります。

+0

コンストラクタに 'new GregorianCalendar()'という値を渡していることが分かっているので、この例外は発生しません。ここで例外が発生する唯一の時は、新しい引数GregorianCalendar()には当てはまらない、悪い引数を渡すことだと私は信じています。同様の例:私は除算が例外を発生させることができることを知っています。これは、 'double PI = 22.0/7.0; 'のようなものをtry/catchでラップする必要があることを意味しますか?部門**は一部のケースで例外を発生させるかもしれませんが、私はこのケースでは決してそれがないことを知っています。おかげさまで –

関連する問題