昨天終於將函式 (function) 介紹完畢,但當我們在執行函式,尤其讀取檔案、或是打 API 時,總會想知道是否有拿取或是送資料成功,這時便是錯誤處理登場的時機!
在了解如何處理錯誤之前,應該先了解有哪些錯誤的類型,這樣才可以對症下藥。
語法錯誤是在剛開始學寫程式時最常遇到的錯誤之一,舉些較常遇到的語法錯誤
範例 1:
package main
import "fmt"
func main() {
name := "奇犽"
age := 12
defer myFavorite(name, age)
name = "西索"
age = 26
myFavorite(name, age)
// 少了結尾的 } 括號
func myFavorite(name string, age int) {
fmt.Println("我最喜歡的人是:", name, " 他", age, "歲")
}
範例 1(執行結果):
syntax error: unexpected myFavorite, expecting (
不過這種錯誤,當你在寫程式時便可以直接看到語法錯誤的提示,不一定要等到執行時才會知道(如下圖):
執行期間錯誤如其名,便是要等到程式執行才會出現,以下也列幾個常見的錯誤:
範例 2:
package main
import "fmt"
func main() {
age := 12
fmt.Fprintln(age/0)
}
範例 2(執行結果):
invalid operation: division by zero
邏輯錯誤是三種錯誤類型中最難被察覺的,因為正常是對程式做了錯誤的資料判斷,以下舉幾個常見的錯誤類型:
範例 3:
老師說考 60 分以上算是及格,若分數不達 60 的人就要重考,所以我決定寫一個函式來做判斷:
package main
import "fmt"
func main() {
fraction := 60
if fraction > 60 {
fmt.Println("分數及格")
} else {
fmt.Println("不及格重考!")
}
}
範例 3(執行結果):
不及格重考!
正常來說分數 60 算是及格,但為何我跑出來的結果卻是不及格?其實是因為我 if 判定,少判定到 >= 60 。
雖說執行的結果不如我的預期,但這種時候並不會報錯,所以說只能從程式的邏輯開始尋找,這就是最難找的錯誤了!
那今天就簡單介紹程式錯誤的類型,明天再繼續詳細介紹錯誤處理,明天見~~