發生錯誤時要執行的動作:處理錯誤

更新:2007 年 11 月

在本課程中,您將學習如何為程式建立基本的錯誤處理程式碼。

即使是最精心設計的程式,偶而也會發生錯誤。有些錯誤是程式碼中的缺失,可以找出並加以更正。但有些錯誤則是程式自然發生的結果,例如,您的程式可能會嘗試開啟已經在使用中的檔案。在這種情況下,可以預測會有錯誤發生,但卻無法避免。身為程式設計人員,您必須要預測這些錯誤,而且要協助程式進行處理。

執行階段錯誤

程式執行時所發生的錯誤,稱為「執行階段錯誤」。當程式嘗試執行並非原先所設計要執行的作業時,就會發生執行階段錯誤。例如,如果程式嘗試執行無效的作業 (例如將非數值字串轉換成數值),就會發生執行階段錯誤。

發生執行階段錯誤時,程式就會發出「例外狀況」(Exception),並查看程式中的程式碼以處理錯誤。如果找不到發生錯誤的程式碼,程式就會停止,而且必須重新啟動。由於這樣可能會導致資料遺失,因此最好是在任何可能預期會發生錯誤之處,建立錯誤處理程式碼,才是明智之舉。

Try...Catch...Finally 區塊

您可以使用 Try...Catch...Finally 區塊,處理程式碼中的執行階段錯誤。您可以 Try 一個程式碼區段。如果該程式碼發出例外狀況,它就會跳至 Catch 區塊,然後執行 Catch 區塊中的程式碼。完成該程式碼以後,便執行 Finally 區塊中的所有程式碼。整個 Try...Catch...Finally 區塊是以 End Try 陳述式結束。下列範例將示範如何使用各個區塊。

Try
  ' Code here attempts to do something.
Catch
  ' If an error occurs, code here will run.
Finally
  ' Code in this block will always run.
End Try

首先,執行 Try 區塊中的程式碼。如果執行時沒有任何錯誤,程式就會略過 Catch 區塊,直接執行 Finally 區塊中的程式碼。如果 Try 區塊中發生錯誤,執行作業便立即跳至 Catch 區塊,執行其中的程式碼,然後再執行 Finally 區塊中的程式碼。

試試看!

若要使用 Try...Catch 區塊

  1. 在 [檔案] 功能表上,選擇 [新增專案]。

  2. 在 [新增專案] 對話方塊中,按一下 [範本] 窗格中的 [Windows 應用程式]。

  3. 在 [名稱] 方塊中,輸入 TryCatch,再按 [確定]。

    會開啟新的 Windows Form 專案。

  4. 從 [工具箱] 中,將一個 [TextBox] 控制項和一個 [Button] 控制項拖曳到表單上。

  5. 按兩下 [按鈕],開啟 [程式碼編輯器]。

  6. 在 Button1_Click 事件處理常式中,輸入下列程式碼:

    Try
      Dim aNumber As Double = CDbl(Textbox1.Text)
      MsgBox("You entered the number " & aNumber)
    Catch
      MsgBox("Please enter a number.")
    Finally
      MsgBox("Why not try it again?")
    End Try
    
  7. 請按 F5 執行程式。

  8. 在文字方塊中輸入數值,然後按一下按鈕。訊息方塊隨即顯示,其中顯示您輸入的數字,之後邀請您再試一次。

  9. 接著,在文字方塊中輸入非數值,例如,字詞,然後按一下按鈕。這次程式會嘗試將文字方塊中的文字轉換成數字,但因無法完成便發生錯誤。此時即不完成 Try 區塊中的程式碼,而執行 Catch 區塊,然後您就會收到訊息方塊,請您輸入數字。然後再執行 Finally 區塊,邀請您再試一次。

後續步驟

在本課程中,您學會如何使用 Try...Catch...Finally 區塊,建立基本的錯誤處理結構。本課程是 Visual Basic 語言簡介的最後一個課程。下一系列的課程中,您將學習如何為程式建立使用者介面。

下一個課程:建立程式的視覺外觀:Windows Form 簡介

請參閱

工作

讓您的程式在兩種可能性之間選擇:If...Then 陳述式

了解錯誤:三種程式設計錯誤

參考

Try...Catch...Finally 陳述式 (Visual Basic)

其他資源

Visual Basic 的結構化例外處理方式