下の文を
書いた後で、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にはまるか、予防線張っておくか。
やっぱコードのサイズしだいかなぁ。