2013年10月13日 星期日

[VB] On Error GoTo ...、On Error Resume Next、On Error GoTo 0的比較

在VB程式撰寫裡,為了避免程式被不可預期的錯誤所中斷,可以使用下列三種指令來解決:

陳述式
描述
On Error GoTo line
啟動錯誤處理常式。且此常式的開始位置由 line 引數指定。此line引數是必要的而且是任何行標籤或是行號。如果發生一個執行階段錯誤,程式控制會跳到 line 的位置,使錯誤處理程式開始動作。指定的 line 必須是和 On Error 陳述式在同一個程序裏。 否則,會發生編譯階段錯誤。
On Error Resume Next
表示當一個執行階段錯誤產生時,程式控制立刻到發生錯誤陳述式接下去的陳述式,而繼續執行下去。當使用一個物件的時候,請使用這個陳述式,而不要使用 On Error GoTo。
On Error GoTo 0 停止現在程序裡任何已啟動的錯誤處理程式。

如果不使用 On Error 陳述式,任何執行階段之錯誤都是嚴重的,結果會導致顯示錯誤訊息,並且中止執行。

On error goto line 與 On error resume next 這兩述敘使用的有效範圍為Sub或Function,例如在Sub或Function的開頭加上,在Sub或Function結束功能就失效,或者使用on error goto 0來取消功能。

若發生的錯誤都是可忽略的,建議使用On error resume next,如此程式就不會因為不可預期的錯誤所中斷了。

如果能知道錯誤的原因,每個錯誤都有個代號,在Err物件中,可由Err.Number來取得。如果錯誤原因有很多種,可以用On error goto line攔截錯誤,搭配Select Case分別提示使用者該如何處理,甚至可以轉回主畫面。架構如下:

On error goto line
...
...
line:
select case err.Number
case 錯誤編號
...
case 錯誤編號
...
case else
...
end select


這樣程式就不會中斷了。

參考資料:
1.On Error 陳述式
2.On Error的用法

沒有留言:

張貼留言