'asp' 搜索網誌文章共有 2
Category : ASP & ASP.net
Reg Date : 2008/11/19 19:00

最近參加了一些課程及同事討論。對於程式的涵蓋率及錯誤處理上, 算是又有一點小進步。所以就決定整理一下這篇很簡單的 ASP 程式 Error handle。ASP 可以用 VBScript 及 JavaScript 來開發。由於 IIS 的預設值是 VBScript, 坊間的工具書也大多用 VBScript 來教學。所以幾乎大部分的程式都是使用 VBScript 來撰寫程式。

老實說, VBScript 在錯誤處理上實在有點陽春。因為只有二種針對 error 處理的方式:
1. on error resume next
   遇到錯誤, 直接跳下一行處理
2. on error goto 0
   遇到錯誤, 錯給你看 (這是預設值)

所以當我們在處理程式時, 有時候使用 on error resume next 非常好用。因為好像什麼錯誤都沒有了。但事實上則不然。因為它只是跳到下一行去處理。錯誤那行就算了。

舉一個必死的除法錯誤例子:

這個例子少打了一個 = 號會造成下列錯誤:
Microsoft VBScript 執行階段錯誤 錯誤 '800a000d'
型態不符合: 'x'

所以我們修改一下:
 

這樣就沒有錯誤產生了。YA!! 沒有事了, 下班去。

這樣做, 真的沒有事嗎...。頁面上輸出 z 的結果是 3, 表示結果是不對的。在現實世界, 一個小小的容錯, 代表著之後所有的運算是一路錯到底!!

一個好的錯誤處理, 應該包括下列幾個項目:
1. 通知網站管理者或程式, 錯誤發生的內容
2. 將錯誤寫入應用程式 Log 中
3. 顯示友善的錯誤訊息
4. 停止繼續執行 ASP
5. 如有存取資料庫, 需考慮是否需要 transmit rollback

所以, 這個陽春版的程式修改大致要如下:

錯誤發生的情況當然是很多種啦, 不過這只是一個簡單的例子, 處理的方式也不會這麼簡單。主要只是透過 Err 元件來決定錯誤處理做什麼事。下次有空我再來寫其他進一步的錯誤處理。



  asp, try...catch...
 0   0
Category : ASP & ASP.net
Reg Date : 2008/10/09 19:00
一開始寫 ASP 程式的時候, 老闆要我寫一支可以清除 HTML code 的程式...
那時候很笨...技巧也很差...所以就寫出了一個像是這樣的 "東西"...

第一代

看了這段程式, 就可以知道有多笨了吧。最可怕的地方是這個的迴圈執行次數是隨字串的長度來增加的。以一篇 500 字的文章來說好了。加上 HTML code 後, 長度變成 1000 很正常。有些用戶還直接貼 word 檔。可能變成 2000 個字元。而列表頁的需求是一頁顯示 10 筆資料。所以平均每頁要跑 10000 ~ 20000 左右的迴圈。網頁的效率有多差, 可想而知。想像一個頁面要開 1~2 分鐘, 有多少人會等...

終於, 連我自己都看不下去了。所以大約半年後, 新學了一個 instr 就現學現用, 寫出了比較像樣的程式。

第二代

第二代的效率就好很多了, 一樣是用迴圈做, 不過迴圈執行的次數取決在 HTML tag 的數量。一樣以 500 字的文章來說, 就算從 word 貼過來, 也不會超 100 個 tag 吧, 一頁 10 筆迴圈執行次數只要 200~800 次就完成了。整體執行效率提升了至少 15 倍。一個網頁開 60 秒跟開 4 秒的差別。成績算是很不錯了吧。後來又過了一年吧, 發現其實還有更好的方法。於是寫出了...

第三代

第三代有二個重點,
1. 重覆使用: 寫成 function 了, 可重覆使用
2. 效率更高


有人說寫程式是一種藝術, 我覺得這樣說有點 "太超過"。不過, 肯定是一門需要不斷學習鑽研的專業技術。這篇看起來應該可以算是一個程式設計的笑話吧。希望有一天我可以變成正面的教材...哈。

  asp, pattern, RegExp, replace
 0   1