下の文を

書いた後で、kinabaさんの日記をみてみた。

public static InputStream openFile(File file) {
    try {
        return new FileInputStream(file);
    } catch (FileNotFoundException e) {
        // Just ignore.
    }
    return null;
}

とか、

public static int valueOf(String str, int defaultValue) {
    try {
        return Integer.parseInt(str, 10);
    } catch (NumberFormatException e) {
        // Just ignore.
    }
    return defaultValue;
}

とか、でwrapするのはだめなんでしょうか?
中は、超綺麗かといわれるとNoだけど、個人的には十分simpleじゃないかなぁ、、、と。
速度は、目をつぶる、というかJITまかせ。
あと、外から見る分には

    InputStream stream = openFile(file1);
    if (stream == null) stream = openFile(file2);

とか、

    int value = valueOf("123456789", 0);

とか、違和感ないかなぁ、とも。自分はよくつかってますが、どでしょ?
ただ、これやると(特に後者は)validなんだかinvalidだったんだかわからないのは問題、かも。


ついでに、Javaの例外はそれなりにエラー処理強制力があるかなぁ、と。
めんどい時は全部、throws ***Exceptionと書いてこぴぺすればいいし、
かといって何もしないとコンパイルエラーでおこられるし、というわけで。
プログラムまるごとabortの場合は、throw new Error(exn);で。
あー、でもnullだけ別か。個人的には気をつけてるのは、
nullになってほしくない変数のに代入するにはその前でnullのチェックはかならず入れる、くらい。
「nullになってほしくない」こと自体は書いてるときには自然と理解してるし。
たかだか3桁程度のおれおれコードだとやらないけど、あとでめんどくさいbugにはまるか、予防線張っておくか。
やっぱコードのサイズしだいかなぁ。