Share via


其他錯誤:仍然有地方發生錯誤

更新:2007 年 11 月

在本課程中,您將學習尋找只發生在特定情況下的邏輯錯誤。

在上一個課程中:追蹤並修正邏輯錯誤:尋找邏輯錯誤,您學會如何尋找並修正邏輯錯誤。在該課程的範例程式碼中,還隱藏著一個錯誤。由於這個錯誤只會發生於特定情況下,因此難以發現。

測試程式

身為程式設計人員,談到測試程式以查看是否表現出您所要的行為時,您是處於劣勢的。因為您知道程式應該如何運作,所以不大可能會犯錯,而暴露出邏輯錯誤。但是對程式不熟悉的使用者,可能、也會做一些您料想不到的事情。

例如,在計算每小時英里數的程式中,是用經過的英里數除以所花費的行程時數。但如果使用者輸入零做為時數或英里數,會怎麼樣?我們來試試,看看結果如何吧!

試試看!

若要測試程式

  1. 開啟您在上一個課程:追蹤並修正邏輯錯誤:尋找邏輯錯誤中所建立的 LogicErrors 專案。

    注意事項:

    如果您尚未完成或未儲存上一個專案,就必須回到該課程加以完成,才能再繼續。

  2. 請按 F5 執行程式。在第一個文字方塊中,輸入 0 (代表分鐘數),然後在第二個文字方塊中輸入 5 (代表英里數),然後再按一下 [Button1]。

    訊息方塊隨即顯示,內含訊息「平均速度無限」。

    讓專案保持開啟狀態,因為在下一個程序中,您將學習如何尋找邏輯錯誤。

5 除以 0 = 無限?

在上一個程序中,「無限」也許不是您所預期的值,但是在數學上是正確的 -- 0 進入 5 無限次數。但是這個值不是您想讓程式使用者看到的值。您可以設法防止這種情形發生嗎?

您可能會想到加入錯誤處理常式,也就是您在課程:發生錯誤時要執行的動作:處理錯誤中所學到的程序。不過,在此情況下,這樣做並沒有用。結果「無限」並不是錯誤,它只是不符合您的期望而已。

由於顯示為零的速度大概不是很有用,因此修正問題的其中一個方式就是:測試值是否為零,然後警告使用者,必須輸入更高的數字。既然要警告使用者,乾脆也防止使用者輸入負數,因為負數也可能會產生錯誤的結果。

在下一個程序中,您將修改 Button1_Click 事件處理常式中的程式碼,以便只有在值大於零時,才呼叫 GetMPH 函式。

試試看!

若要修正錯誤

  1. 在 [程式碼編輯器] 中,變更 Button1_Click 事件處理常式中的程式碼如下:

    Dim minutes As Integer = CInt(Textbox1.Text)
    Dim miles As Double = CDbl(Textbox2.Text)
    Dim hours As Double = 0
    If minutes <= 0 Or miles <= 0 Then
      MsgBox("Please enter a number greater than zero")
    Else
      hours = minutes / 60
      MsgBox("Average speed " & GetMPH(miles, hours))
    End If
    
  2. 按下 F5 再次執行程式。在第一個文字方塊中,輸入 0, 並在第二個文字方塊中,輸入 5。然後按一下 [Button1]。

    此時您應該會看見訊息方塊,指示您輸入大於 0 的數字。請嘗試以其他的數字組合測試程式,直到您滿意修正的錯誤為止。

後續步驟

在本課程中,您學會如何尋找並修正導致未預期行為的邏輯錯誤。在下一個課程中,您將學習如何在程式碼中使用註解。

下一個課程:建立程式說明:使用註解

請參閱

工作

追蹤並修正邏輯錯誤:尋找邏輯錯誤

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

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

尋找錯誤:Visual Basic 偵錯簡介

參考

/ 運算子 (Visual Basic)