iT邦幫忙

2021 iThome 鐵人賽

DAY 18
0
Modern Web

golang後端入門分享系列 第 18

Day18-Go錯誤處理(上)

前言

在執行程式時,遇到系統錯誤或是網路異常是無可避免的,這時我們可能印出錯誤訊息並且讓程式中斷。
當然也不只系統上的錯誤,有時會有參數帶入的錯誤,也必須印出錯誤訊息,
這篇我們要介紹 Go 語言錯誤處理的機制。

Error Interface

在 Go 語言中,將錯誤定義成一個 interface,而內建的 error interface 如下:

error interface {
   Error() string
}

在許多套件中的 function,都會再回傳值中,帶一個 error 回傳,例如 strconv.Atoi,我們看一下這個 function 的組成:

func strconv.Atoi(s string) (int, error)

範例

那直接來看如何運用這個 error 回傳值:

package main
 
import (
   "fmt"
   "strconv"
)
 
func main() {
   i, err := strconv.Atoi("0.5")
   if err != nil {
       fmt.Println("couldn't convert number:", err)
       return
   }
   fmt.Println("Converted integer:", i)
}

先來講解 strconv.Atoi 的用途,我們帶入一個字串,但必須是整數字串,聽起來有點繞舌,舉個例子,例如 "1",將其帶入會輸出整數1,以及error,當然如果沒有錯誤,當然就是回傳空值。

那以上面的例子,err 這個變數不為空值,這時你試著只印出 err,會是 invalid syntax ,恩...翻譯成"無效的語法",如果在一個較大的專案,哪會知道錯誤發生在哪段,所以盡可能印出更詳細的資訊,才比較能夠追蹤錯誤,
有時不見得是參數帶錯,而是程式和需求相左,所以這樣如此一來也方便你 debug。

結語

今天介紹簡單的錯誤語法運用,明天將會帶來更實務上的運用,有關 defer 、 panic 、 recover 的使用。感謝各位讀者今天的閱!


上一篇
Day17-Goroutine
下一篇
Day19-Go錯誤處理(下)
系列文
golang後端入門分享30

尚未有邦友留言

立即登入留言