結局のところtry〜catchを書かないといけないということは、プログラムの書きにくさに直結します。
3行もコードが増えて、インデントがひとつ深まります。変数の定義が遠くtryブロックの外に追いやられたりもします。
ということで、例外を投げないparseメソッドがあれば、かなりプログラムが書きやすくなります。
Date parse(String source, Date defaultDate)
のようなメソッドを用意して、解析できなければdefaultDateを返してもらえるようになればありがたいのです。
ただ、この場合defaultDateにnullを指定するとparse(String source, ParsePosition pos)と区別が付かなくなってしまうので、メソッド名は別のものにする必要があります。
なので、こんなのが欲しいです。
Date parseDef(String source, Date defaultDate)
まあ、parseの話で言えば、本当に欲しいのはInteger.parseIntの例外不要版です。
static int parseIntDef(String source, int defaultValue)
というものを熱望します。
で、あと、ついでに例外不要版の個人的な要望でいえば、javax.swing.text.DocumentのinsertStringで末尾に追加するものですね。
try{ doc.insertString(str, doc.getLength(), attr); }catch(BadLocationException ex){ }
とか書いてたのが
doc.addString(str, attr);
とかければすごく幸せ。
と思ったらDocumentはインタフェースですか。結局AbstractDocumentクラスを継承することになるからインタフェースが分かれてる意味ぜんぜんないのに、インタフェース分けちゃってるから機能拡張できなくなったっていう、これもまたJavaによくありがちなパターン。
Documentにメソッド追加してもAbstractDocumentに実装追加しておけば誰も困らないと思うんですけどね。