| ■No86487 (kiku さん) に返信
> 理論上、どんな例外が発生するでしょうか? > 当方では発生しないはずとしてコーディングしています。
理論上ということであれば、ディスク操作しているので、ディスクエラー関連の例外は一通り配慮が必要だと思います。 アプリ2はリードのみ(ただしアプリ1側は別)なのでディスクフルは出ないと思いますが。。。
また、よくあるエラーの一つにアンチウィルスソフトがアクセスしていたためアクセスに失敗というのもあります。 パッケージベンダーさんだと大体年に一度くらいはこのネタでサポートがにぎわうくらいにはメジャーです。
そのほかではハードウェアエラーの類がありますね。セクタが読めなくてリードエラーもよくある話題の一つです。
その他、ソースに記述していない処理の部分で例外が出る可能性もあります。 ReadLine() 部分は読み捨てているソースとなっていますが、実際にはそこで何かしていると思います。 その何かの処理中にメモリ不足などが発生すれば例外が発生します。UTF8のつもりで読んでいるのに保存しているのは Shift-JISだと、ASCII以外の文字コードで文字化けするため、それが理由でエラーになるなどもあります。
理論上という意味でいえば、ほかにも例外は出る可能性がありますが、ソースコードの全文があるわけではないので これ以上は何とも言えません。
あと、本題とは関係ありませんが
filelist.OrderBy(x => x);
では、OrderBy の結果が使われません。言い換えれば無駄な処理を呼び出している状態といえます。
これが、
var filelist = localfile.Where(x => Regex.IsMatch(Path.GetFileName(x), @"^.*\.csv$", RegexOptions.IgnoreCase)).OrderBy(x => x);
であればまた違ってきますが...
それと、拡張子を絞りたいだけなら、GetFiles のパラメータで指定するという方法もあります。 また、Path.GetFileName() ではなく、Path.GetExtension() を使えば、拡張子だけ取得できます。
さて、理論上発生しうる例外という点ではほかにもあるかもしれませんが ソースコードが修正可能なのであれば、例外を無条件に握りつぶすのではなく ログを取得しておくなど、あとで確認できる方法をとることはできないのでしょうか?
ex.Message だけでもかなりの判断が可能と思いますが、ex.ToString() でトレースも含めて詳細を 吐き出しておくことでより詳しく調査することができます。
|