none
請教一下 try catch 的問題 ? RRS feed

  • 問題

  • 我寫了個小程式裡,程式有兩個讀檔的部分,兩個都是讀相同的一個檔案,我用了try catch 去抓如果有錯誤時的例外。程式大概如下:

    //第一個讀檔
    try{
    FileStream Fread = new FileStream(來自TextBox.Text的檔名,FileMode.Open);
    .
    .
    Fread.read(.......);
    .
    .
    Fread.Dispose();
    }
    catch{
    MessageBox.Show();
    }
    //如果Fread.Dispose()寫在這裡,會出現build錯誤:找不到Fread

    //第二個讀檔
    try{
    StreamReader Sread = new StreamReader(
    來自TextBox.Text的檔名);
    .
    .
    readfile = Sread.ReadLine();
    .
    .
    Sread.Dispose();
    }
    catch{
    MessageBox.Show();
    }

    我的問題是,如果在第一個讀檔區段裡出了錯,程式就會跳過 Fread.Dispose(),而來到第一個讀檔的 catch 部分,並且秀出例外訊息,但是這樣也就造成了第二個讀檔區段出現錯誤說:檔案正被另一個程序使用中(因為沒Dispose)。而我將 Fread.Dispose()寫在try-catch外面時,則是出現找不到Fread。或者我將
    FileStream Fread = new FileStream(來自TextBox.Text的檔名,FileMode.Open); 宣告在 try-catch 外面時,一樣在 try 裡也是不能使用 Fread ...。所以想請教一下大家,這要怎麼處理呢??  非常謝謝您的幫助 !!


    2008年1月15日 上午 11:11

解答

  • 程式碼區塊

    //第一個讀檔

    FileStream Fread = null;
    try{
    Fread = new FileStream(來自TextBox.Text的檔名,FileMode.Open);
    .
    .
    Fread.read(.......);
    .
    .

    }
    catch{
    MessageBox.Show();
    }

    finally

    {

    Fread.Dispose();

    }

     

     

     

     

    2008年1月15日 上午 11:34
    版主