2014/07/18

TFileStream でファイルを開く場合の例外処理

長年 TFileStream でファイルを開く場合の例外処理で以下のようなコードを使用していました。通常ファイルオープンダイアログを使ってファイルを開くので、エラーが発生することはずっとなかったんですが、最近排他制御されたファイルを開く際にエラーが発生したので、構造を見直すことにしました。

調べてみると例外処理をまとめられてる コードとして Stack Overflow に例が載っていました。

ほかにはいろいろとサイトを調べてみたけど、これが良さそうです。TFileStream のインスタンスを生成する場所を例外ブロックの中に入れて、finally ブロックを内側にするだけで、オープン時のエラーに対応することができました。

なお、EFOpenError のメッセージですが、ファイルがないエラーだけではなく、排他制御で開かないなどのエラーもあるので例外メッセージをそのまま使用しています。
また、ファイル書き込みの場合は例外クラスとして EFCreateError クラスを使用します。

0 件のコメント:

コメントを投稿