C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■89819 / )  using のインスタンス生成で例外が発生する場合の処理
□投稿者/ dogatana (1回)-(2019/01/05(Sat) 12:25:02)

分類:[C#] 

こんにちは。

CSVファイルを書き込む処理を実装しています。

よくあるように、using を利用しているのですが、該当ファイルが既にExcel開かれていると
StreamWriter のインスタンス生成で例外が発生します。
この例外の処理のため using ブロックを try - catch で囲んだのですが、try - catch は
比較的限定された範囲で使用するのが通例と聞いており、このように usingブロックを囲むと
範囲が広すぎるように思え、気持ち悪さがあります。

この例のように、using のインスタンス生成で例外が発生する場合は、using を使わず
try - catch - finally で実装するのが自然でしょうか。

ご教示いただければ幸いです。

static public string ExportCsv(string filename, IEnumerable<EventLog> list)
{
    try {
        var encoding = Encoding.GetEncoding("Shift_JIS");
        using (var sw = new StreamWriter(filename, false, encoding)) {
            sw.WriteLine(EventLog.Title);
            foreach (var item in list) {
                sw.WriteLine(item.ToCsv());
            }
        }
        return "";
    }
    catch (Exception e) {
        return e.Message;
    }
}

返信 編集キー/


管理者用

- Child Tree -