元件產生之錯誤處理 |
答題得分者是:dllee
|
jessechan
版主 發表:109 回覆:394 積分:254 註冊:2002-04-05 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 請問若一個自己寫的元件在 create 時如果發現有錯誤發生, 如本來應配置記憶體, 可是失敗了, 所以這個元件就算產生了也沒有作用, 這時應該如何處理. jessechan 你好: (1)請問你說配置記憶體失敗?? 一般我們在配置記憶體很少會失敗的,除非是 create 了一塊超大塊的記憶體,才比較有可能導致失敗 ( > > --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
jessechan
版主 發表:109 回覆:394 積分:254 註冊:2002-04-05 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: sorry, 我只是舉個例子而已, 換個情況, 假設我作一個元件規定只能佈置在 TForm 上面, 如果使用者把它放在其它的 container 上則會有錯誤產生, 則要如何處理.jessechan 你好: 請參考以下的做法 ( > ( > < class="code"> class TMyPanel : public TPanel { typedef TPanel inherited; ... protected: virtual void __fastcall SetParent(TWinControl *AParent); ... }; void __fastcall TMyPanel::SetParent(TWinControl *AParent) { if( (AParent) && (!dynamic_cast
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
建議您,如果在 create 元件時發生錯誤,那就 throw exception 吧! throw Exception("XXX component crreate error!! cause by ooxx..."); 這樣,對於您自己不但可以除錯,對於使用者來說也才知道是否誤用了元件。您可以參考 VCL 的原始碼,只有錯,就是 throw Exception!!
如果您的元件有分類,也可以專為您的 VCL 建一個 Exception 的分類(Class)。 以前在寫程式時,很討厭 exception ,但是現在它是我最好的除錯工具之一,也是共同開發專案時確保元件或函式正確使用的好方法!
只要在開發過程有完整的測試,不用擔心客戶會看到 exception 畫面,因為您在開發過程已可能會遇到,同時也已 DEBUG 了。 沒空更新的網頁...
http://coolsite.to/dllee C及指標教學,計算機概論,資訊管理導論... http://home.kimo.com.tw/dllee.tw
http://coolsite.to/ushells 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |