線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1509
推到 Plurk!
推到 Facebook!

請問為何try...catch好像沒反應?

答題得分者是:skcc
cheng_lee
一般會員


發表:3
回覆:0
積分:0
註冊:2002-10-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-12-31 20:04:12 IP:218.184.xxx.xxx 未訂閱
請教各位先進: 我的程式碼如下: ...... TRichEdit SrcRichEdit; FILE *temp_ptr, *fp; ............. fp=fopen("D:\\TestFiles\\Result", "wb"); try{ fputs(SrcRichEdit->SelText.c_str(), fp);//這行會因不明原因出錯 } catch(...) //不管什麼原因出錯都打算這麼處理 { temp_ptr=fopen("D:\\TestFiles\\temp.txt", "ab"); fprintf(temp_ptr, "\n fputs goes wrong."); fclose(temp_ptr); fclose(fp); ......//殺掉會造成exception的檔案後繼續工作 } ......... 請問各位先進,為何當fputs(SrcRichEdit->SelText.c_str(), fp);這行會因不明原因出錯後,會產生一個打X且有"Abnormal program termination"訊息的小始窗,等我在這個小始窗按"確定"後程式就結束了?我去檢查D:\TestFiles\temp.txt這個檔案發現catch(...)的內容並沒有執行(沒有" fputs goes wrong.")。 因為希望能自動處理很多個檔案,我想在程式中把會造成exception的檔案殺掉後繼續工作,不要因為任何例外造成程式停頓,該如何寫才能處理任何例外而不會出現一個打X的小始窗呢?
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-12-31 23:58:12 IP:61.221.xxx.xxx 未訂閱
引言: 我的程式碼如下: ...... TRichEdit SrcRichEdit; FILE *temp_ptr, *fp; ............. fp=fopen("D:\\TestFiles\\Result", "wb"); try{ fputs(SrcRichEdit->SelText.c_str(), fp);//這行會因不明原因出錯 } catch(...) //不管什麼原因出錯都打算這麼處理 { temp_ptr=fopen("D:\\TestFiles\\temp.txt", "ab"); fprintf(temp_ptr, "\n fputs goes wrong."); fclose(temp_ptr); fclose(fp); ......//殺掉會造成exception的檔案後繼續工作 } ......... 請問各位先進,為何當fputs(SrcRichEdit->SelText.c_str(), fp);這行會因不明原因出錯後,會產生一個打X且有"Abnormal program termination"訊息的小始窗,等我在這個小始窗按"確定"後程式就結束了?我去檢查D:\TestFiles\temp.txt這個檔案發現catch(...)的內容並沒有執行(沒有" fputs goes wrong.")。 因為希望能自動處理很多個檔案,我想在程式中把會造成exception的檔案殺掉後繼續工作,不要因為任何例外造成程式停頓,該如何寫才能處理任何例外而不會出現一個打X的小始窗呢?
cheng_lee 你好:
(1)依照你所提供的片段程式碼~~可能也無法判斷是什麼問題??< >
( >
(>>>
備註:
如果還有問題~~就再提出來< >    -- 
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
skcc
中階會員


發表:36
回覆:96
積分:88
註冊:2002-08-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-01-02 12:07:07 IP:203.198.xxx.xxx 未訂閱
引言: 請教各位先進: 我的程式碼如下: ...... TRichEdit SrcRichEdit; FILE *temp_ptr, *fp; ............. fp=fopen("D:\\TestFiles\\Result", "wb"); try{ fputs(SrcRichEdit->SelText.c_str(), fp);//這行會因不明原因出錯 } catch(...) //不管什麼原因出錯都打算這麼處理 { temp_ptr=fopen("D:\\TestFiles\\temp.txt", "ab"); fprintf(temp_ptr, "\n fputs goes wrong."); fclose(temp_ptr); fclose(fp); ......//殺掉會造成exception的檔案後繼續工作 } ......... 請問各位先進,為何當fputs(SrcRichEdit->SelText.c_str(), fp);這行會因不明原因出錯後,會產生一個打X且有"Abnormal program termination"訊息的小始窗,等我在這個小始窗按"確定"後程式就結束了?我去檢查D:\TestFiles\temp.txt這個檔案發現catch(...)的內容並沒有執行(沒有" fputs goes wrong.")。 因為希望能自動處理很多個檔案,我想在程式中把會造成exception的檔案殺掉後繼續工作,不要因為任何例外造成程式停頓,該如何寫才能處理任何例外而不會出現一個打X的小始窗呢?
就你的程序而言,須然我覺得在 BCB 中這種寫法不是太適合如 RaynorPao 兄所言: 如果只是想處理純文字檔案~~為什麼不嚐試使用 TStringList 呢?? TStringList *slBuf=new TStringList; slBuf->LoadFromFile("temp.txt"); // 在這裡處理文字內容 slBuf->SaveToFile("temp1.txt"); delete slBuf; 但若然站在純 C Language 的立場來說,請你把你的程式改成這樣:
FILE *fp;
.............
//若然你寫的不是 Binary Data,所以不需用 "wb" 轉用 "w "
fp=fopen("D:\\TestFiles\\Result", "w "); 
if( fp == NULL )
  ShowMessage("不能開啟檔案");
else
{
  fputs(SrcRichEdit->SelText.c_str(), fp);
  ..
  ..
}
if( fclose(fp) )
  ShowMessage("關閉檔案發生錯誤!");
Anthony Lee
系統時間:2024-04-29 20:36:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!