|
最近參加了一些課程及同事討論。對於程式的涵蓋率及錯誤處理上, 算是又有一點小進步。所以就決定整理一下這篇很簡單的 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 元件來決定錯誤處理做什麼事。下次有空我再來寫其他進一步的錯誤處理。
|