2015年11月21日

日記

java.io.File の API ではファイルを削除する delete() メソッドは成否の boolean を返すけど、java.nio.file.Files では delete() メソッドは返り値を返さず、削除の失敗は例外を投げる。 Java の例外システムを考えると例外投げるのが妥当だろうし、失敗の原因もわかるのでいいとは思うが、Stream API 使うときには例外処理が面倒なのは考えもの。 何かしら Stream API と例外処理を同時にうまく扱える方法はないんだろうかね・・・ ってモナドとかになるのかな?

2つのアプローチの間みたいな方法として、削除しても例外を投げずに例外の Optional を返す、とかってのはどうだろう? 削除の成否の boolean とは逆っぽい感じだけど返り値の型が Optional<IOException> になってれば分かるだろうかと思う。 成否を気にしない(というのはホントはよくないだろうけど)場合には返り値を捨てるだけで try-catch 文を書く必要はないし、気にしたい場合は例外を取り出せば原因も分かる。 まぁ、例外ってなに?みたいなことになってくるけど、たしか Google Go の例外って返り値みたく返されるんだったよな。 多重代入みたいにして通常の返り値も返せるし。 そんなに悪いアプローチでもない気がする(それなりに広く認知されれば

Javaのメカニズム―エラー処理・例外で困っているあなたに

Javaのメカニズム―エラー処理・例外で困っているあなたに

Go言語プログラミング入門on Google App Engine

Go言語プログラミング入門on Google App Engine

)。

ツイート (ツイート数 47)