マル開発日記

マルAndroidデベロッパ

java.io.PrintWriter には罠がある

 こんばんは、自分のアプリではバックアップ機能としてテキストのバックアップファイルを作る仕組みになっています。そこで使っているのがPrintWriterだったりしますが、こやつはなかなかの曲者であることを最近知りました。

 PrintWriterはファイル操作(書き込み、クローズ等)で何かを失敗してもIOExceptionを投げません。よって障害が発生しても例外をスルーせず、あたかもコードが正常に終了したように振る舞います。もちろんこのクラス以外のWriterはちゃんと例外投げますよ。それが故に大きな罠だったりします。

 対策として、このクラスのメソッドであるcheckErrorでtrueが返ってきた時、何かトラブルがあったんだなぁと調べることができます。でもどんなトラブルが発生したかについては調べる方法なさそうですね。詳細はPrintWriterのソースコードを見てみて下さい。なかなかシンプルイズベストなコードになっていますよw

 あとOpenCSVとかも内部ではPrintWriterを使っているようなので、こちらも使い方に気をつけて下さい。

 イース8を買ったので遊びます。それではごきげんよう。