在(vbscript/vba)程式設計中有三種型別的錯誤:
語法錯誤(也稱為解析錯誤)發生在vbscript的解釋時間。 例如,下面一行導致語法錯誤,因為它缺少乙個右括號。
functionerrorhanlding_demo()
dimx,y x = "
yiibai yiibai
"y = ucase
(xend function
執行時錯誤(也稱為異常)在執行期間發生,在解釋之後。
例如,下面的行會導致執行時錯誤,因為這裡的語法是正確的,但是在執行時它正在嘗試呼叫fnmultiply
,但這是乙個不存在的函式。
functionerrorhanlding_demo1()
dimx,y x = 10
y = 20
z =fnadd(x,y)
a =fnmultiply(x,y)
end function
function
fnadd(x,y)
fnadd = x +y
end function
邏輯錯誤可能是最難追查的錯誤型別。這些錯誤不是語法或執行時錯誤的結果。 相反,當您在驅動指令碼的邏輯中犯了乙個錯誤,並且沒有得到預期的結果時,就會發生這種情況。
你可能無法捕捉到這些錯誤,因為這取決於業務需求,在程式中加入什麼型別的邏輯。
例如,將乙個數字除以零,或寫入乙個進入無限迴圈的指令碼。
假設我們有乙個執行時錯誤,那麼通過顯示錯誤資訊來停止執行。作為開發人員,如果想捕獲錯誤,那麼使用error
物件。
例子
在下面的例子中,err.number
給出錯誤號,err.description
給出錯誤描述。
err.raise 6'raise an overflow error.
msgbox
"error #
" & cstr(err.number) & "
" &err.description
err.clear
'clear the error.
vba啟用錯誤處理例程,也可以用來禁用錯誤處理例程。沒有on error
語句,發生的任何執行時錯誤都是致命的:顯示錯誤訊息,並且執行突然停止。
onerror
編號關鍵字描述1
goto line
啟用在所需的行引數中指定的行開始的錯誤處理例程。指定的行必須與on error
語句在相同的過程中,否則將發生編譯時錯誤。
2goto 0
禁用當前過程中啟用的錯誤處理程式並將其重置為nothing
。
3goto -1
禁用當前過程中啟用的異常並將其重置為nothing
。
4resume next
指定發生執行時錯誤時,控制權轉到發生錯誤的語句之後的語句,並從該點繼續執行。
例子
publicsubonerrordemo()
onerror
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.
case10'
divide by zero error
msgbox ("
you attempted to divide by zero!")
case
else
msgbox
"unknown error - error#
" & err.number & "
: " &err.description
endselect
resume
next
end sub
boost教程(十八) 錯誤處理 system
boost.system 可以由特定作業系統平台的錯誤 轉換出跨平台的錯誤 boost.exception 允許給任何異常新增額外的資訊,以便利用 catch 相應的處理程式更好的對異常作出反應。include include include include include 方法 name 和 me...
VBA基礎學習之1 12錯誤處理
在 vbscript vba 程式設計中有三種型別的錯誤 1.12.1語法錯誤 語法錯誤 也稱為解析錯誤 發生在vbscript的解釋時間。例如,下面一行導致語法錯誤,因為它缺少乙個右括號。function errorhanlding demo dim x,y x yiibai yiibai y u...
MySql錯誤處理 錯誤處理的例子
有幾種錯誤處理的宣告形式 如果任何錯誤 不是 not found 設定 l error 為 1 後繼續執行 declare continue handler for sqlexception set l error 1 如果發生任何錯誤 不是 not found 執行 rollback和產生一條錯誤...