iT邦幫忙

2022 iThome 鐵人賽

DAY 30
0
自我挑戰組

跟著 Go 實戰聖經 一起自學 Go系列 第 30

# DAY 30 Go 語言 錯誤處理 error 值

  • 分享至 

  • xImage
  •  

昨天介紹程式錯誤的類型,今天再繼續介紹錯誤處理 error 值

Go 語言的 error 值

在 Go 語言中,一個 error 都算是一個 ,那既然他是一個值,所以在 Go 語言中也可以設定 error 的內容,也就是說你可以把 error 當作引數傳給函式、被函式傳回,當然 error 也可以被讀取或是被比較,因為他是一個值。

在 Go 語言中 error 值是 nil 時,代表沒有錯誤,但若是其他值時,代表有錯誤發生,當 error 值不等於 nil 時,我們應該要對他做些處理,常見的處理方式如下:

  1. 將 error 傳給函式呼叫者
  2. 用 log 記錄錯誤,然後繼續執行
  3. 停止程式執行
  4. 忽略 error (非常不推薦,你應該要對錯誤有處理!)
  5. 引發 panic

Go 有定義 error 的型別。我們可以透過把回傳的 error 變數與 nil 做比較,來判定操作是否成功:

package main

import "fmt"

func myFavorite() (name string, err error) {
    name = "奇犽"
    err = nil
    return name, err
}

func main() {
    value, err := myFavorite();
    
    if err != nil {
        fmt.Println("我的 error 不是 nil 值,我是:", value);
    } else {
        fmt.Println("我的 error 是 nil ");
    }
    
}
我的 error 是 nil 

上面我們透過 err 不等於 nil 時,執行一段程式碼,不知道大家會不會跟我有一樣的疑問,這樣看來感覺很麻煩誒,感覺我每次都要一直四處檢查錯誤,重複的 err != nil 要寫很多遍,但實際上,在錯誤處理這塊還有有更多的設計方式,讓我們可以更優雅的處理錯誤。

最後一天的鐵人賽就介紹到這邊,那以上 30 天的文章都是依照 完全自學! Go 語言 實戰聖經 的內容,加上我個人的解讀跟見解來學習,若大家對於 Go 有想更深入的了解,可以選擇本書,內有大量的範例跟練習題供大家參考學習,happy coding~


上一篇
DAY 29 Go 語言 程式錯誤的類型
系列文
跟著 Go 實戰聖經 一起自學 Go30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Lin Chen
iT邦新手 5 級 ‧ 2022-10-16 01:58:01

恭喜完賽!!!

我要留言

立即登入留言