VBA基礎學習之1 12錯誤處理

2021-10-03 15:22:01 字數 2232 閱讀 6795

在(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 新手來說,寫入資料庫的時候出現找不到控制器的問題,兩相不相干的問題,那真是難上加難,無耐之下,我把裡面擴張的類全部用教程裡的原始碼替換,看看是不是自己有些地方寫錯,沒想,替換以後還是...