在(vbscript/vba)程式設計中有三種型別的錯誤:
1.12.1語法錯誤
語法錯誤(也稱為解析錯誤)發生在vbscript的解釋時間。 例如,下面一行導致語法錯誤,因為它缺少乙個右括號。
function errorhanlding_demo(
) dim x,y
x ="yiibai yiibai"
y = ucase(x
end function
1.12.2執行時錯誤
執行時錯誤(也稱為異常)在執行期間發生,在解釋之後。
例如,下面的行會導致執行時錯誤,因為這裡的語法是正確的,但是在執行時它正在嘗試呼叫fnmultiply,但這是乙個不存在的函式。
function errorhanlding_demo1()
dim x,y
x = 10
y = 20
z = fnadd(x,y)
a = fnmultiply(x,y)
end function
function fnadd(x,y)
fnadd = x + y
end function
1.12.3邏輯錯誤
邏輯錯誤可能是最難追查的錯誤型別。這些錯誤不是語法或執行時錯誤的結果。 相反,當您在驅動指令碼的邏輯中犯了乙個錯誤,並且沒有得到預期的結果時,就會發生這種情況。
你可能無法捕捉到這些錯誤,因為這取決於業務需求,在程式中加入什麼型別的邏輯。
例如,將乙個數字除以零,或寫入乙個進入無限迴圈的指令碼。
1.12.4error物件
假設我們有乙個執行時錯誤,那麼通過顯示錯誤資訊來停止執行。作為開發人員,如果想捕獲錯誤,那麼使用error物件。
例子在下面的例子中,err.number給出錯誤號,err.description給出錯誤描述。
err.raise 6 ' raise an overflow error.
msgbox "error # "
& cstr(err.number)
&" "
& err.description
err.clear ' clear the error.
1.12.5錯誤處理
vba啟用錯誤處理例程,也可以用來禁用錯誤處理例程。沒有on error語句,發生的任何執行時錯誤都是致命的:顯示錯誤訊息,並且執行突然停止。
on error
編號
關鍵字描述
1goto line
啟用在所需的行引數中指定的行開始的錯誤處理例程。指定的行必須與on error語句在相同的過程中,否則將發生編譯時錯誤。
2goto 0
禁用當前過程中啟用的錯誤處理程式並將其重置為nothing。
3goto -1
禁用當前過程中啟用的異常並將其重置為nothing。
4resume next
指定發生執行時錯誤時,控制權轉到發生錯誤的語句之後的語句,並從該點繼續執行。
public sub onerrordemo(
) on error goto errorhandler ' enable error-handling routine.
dim x, y, z as integer
x =50 y =
0 z = x / y ' divide by zero error raises
errorhandler: ' error-handling routine.
select case err.number ' evaluate error number.
case 10 ' divide by zero error
msgbox (
"you attempted to divide by zero!"
) case else
msgbox "unknown error - error# "
& err.number &
" : "
& err.description
end select
resume next
end sub
VBA錯誤處理(十八)
在 vbscript vba 程式設計中有三種型別的錯誤 語法錯誤 也稱為解析錯誤 發生在vbscript的解釋時間。例如,下面一行導致語法錯誤,因為它缺少乙個右括號。function errorhanlding demo dimx,y x yiibai yiibai y ucase xend fu...
php基礎之錯誤處理
php中,將各種錯誤進行了不同級別的劃分,大約有十多個級別,這就是技術層面的錯誤分級。每個級別的錯誤都有相應代號,就是系統內部定義的乙個常量。常見的錯誤級別有如下幾種 echo 系統常見錯誤 echo e error e error t t其對於的二進位制值為 getbinstr e error e...
Zend Framework學習 之錯誤處理
只在提交表單的時候出問題呢?我一步步跟蹤查詢問題的出處,最後竟然發現是在寫入資料庫的時候出了問題.對於我這個zend 新手來說,寫入資料庫的時候出現找不到控制器的問題,兩相不相干的問題,那真是難上加難,無耐之下,我把裡面擴張的類全部用教程裡的原始碼替換,看看是不是自己有些地方寫錯,沒想,替換以後還是...