程式設計基礎:異常處理
當你編寫一個程式時,它往往不會像你預期的那樣工作。它可能無法編譯,也可能在你執行時崩潰,或者可能給你錯誤的結果。這些都是你程式碼中的錯誤,我們可以將它們分為 3 個不同的錯誤類別
- 編譯錯誤
- 執行時錯誤
- 邏輯錯誤
讓我們看看它們分別代表什麼。
你可能遇到過很多這種錯誤,當你試圖執行你的程式時,它不會編譯,會給你一個錯誤訊息。如果你使用的是類似 Visual Studio 的東西,它甚至會用藍色波浪線來標記有問題的程式碼。你編寫的程式碼的結構或語法存在問題。這可能是一種情況,你忘記新增一個閉括號,或者你拼錯了關鍵字。看看這個例子
For x = 1 two 9
console.WriteLine(x)
Next
你應該可以看到,在第 1 行,程式設計師拼錯了單詞 to。這段程式碼根本無法工作。
有時你的程式會編譯得很好,但在你實際執行它時會崩潰。例如,這段程式碼
Dim x as integer = 0
Dim total as integer = 0
While x < 5
total = total + 1
Loop
程式設計師建立了一個無限迴圈,並且 total 的值會趨於無窮大,最終導致程式崩潰。
邏輯錯誤是指程式編譯透過,沒有崩潰,但它給出的答案是不正確的。程式碼傳達的邏輯、語義或含義是錯誤的。看看下面的例子
Dim Price as decimal = 45.99
Dim Tax as decimal = 0.20
Console.Writeline("Price {{=}} " & Price)
Console.Writeline("VAT {{=}} " & Price * Tax)
Console.Writeline("Total {{=}} " & Price + Tax)
在上面的例子中,你希望它輸出
但由於第 6 行存在邏輯錯誤,它輸出了
為了修復它,你必須修復程式碼的邏輯並將第 6 行更改為
Console.Writeline("Total = " & Price + (Price * Tax))
|
練習:異常處理 命名並給出程式設計程式碼中三種錯誤型別的示例 答案
以下程式碼中存在什麼錯誤,你將如何修復它 dim x as integer
do until x > 5
x = 1
x = x + 1
loop
答案 存在一個執行時錯誤。
以下程式碼中存在什麼錯誤,你將如何修復它 dim n as sting
console.writeline("enter your name")
n = console.readline
答案 第一行存在一個編譯(語法)錯誤。
以下程式碼中存在什麼錯誤,你將如何修復它 Dim names() As String = {"Harry", "Dave", "Princess", "Nicky"}
'print all the names
For x = 1 to 3
Console.Writeline("name " & x & " = " & names(x))
Next
答案 第三行存在一個邏輯(語義)錯誤。
以下程式碼中存在什麼錯誤,你將如何修復它 Dim names() As Sting = {"Harry", "Dave", "Princess", "Nicky"}
Dim y As Integer
y = Console.Readline()
'print some of the names
For x = 0 to y
Console.Writeline("name " & x & " = " & names(x))
Next
答案 第 1 行存在編譯錯誤,
|
Dim age as integer
console.writeline("How old are you?")
age = console.readline()
console.writeline("What is your name?")
對於上面的程式碼,如果我們輸入以下內容,可以很容易地使它崩潰
原因,正如你應該已經知道的,變數 age 是一個整數,而你試圖將字串 捲心菜 儲存到一個整數中。這就像試圖將大炮塞進駱駝,它們不相容,VB 肯定會抱怨並破壞你的所有程式碼。我們需要的是一種方法來阻止或捕獲這些錯誤,我們將研究一下 try and catch。
Dim age as integer
console.writeline("How old are you?")
Try
age = console.readline()
Catch ex As Exception
console.writeline(ex.message)
End Try
console.writeline("What is your name?")
這將處理這個問題
讓我們知道你輸入的是一個字串,而它期望的是一個整數。程式沒有崩潰。
|
練習:異常處理 使用 try and catch 來避免使用者輸入的值 Dim names() As String = {"Harry", "Dave", "Princess", "Nicky"}
Dim y As Integer
y = Console.Readline()
'print some of the names
For x = 0 to y
Console.Writeline("name " & x & " = " & names(x))
Next
答案 Dim names() As String = {"Harry", "Dave", "Princess", "Nicky"}
Dim y As Integer
y = Console.Readline()
'print some of the names
Try
For x = 0 to y
Console.Writeline("name " & x & " = " & names(x))
Next
Catch ex As Exception
console.writeline("Looks like we're exceeded our array index")
console.writeline(ex.message)
End Try
|
