定義錯誤
errors.New("錯誤碼")
: 生成一個錯誤類型的實例1
2
3
4
5
6
7
8
9
10
11
12
13package main
import (
"errors"
"fmt"
)
//定義一個errNotFound的變量為error類型,並用errors.New產生實例
var errNotFound error = errors.New("NotFoundError")
func main(){
fmt.Printf("error : %v",errNotFound)
}- 在函數外定義錯誤,在函數內引用
tips
error
類型並不是結構體(struct)類別,而是interface
https://golang.org/pkg/builtin/#error只要實現
error
接口,我們也可自定義錯誤類型1
2
3type error interface{
Error() string
}- 絕大多數情況下使用
errors.New()
就能滿足自定義錯的需求
自定義錯誤類型(struct)
- 欲自定義錯誤類型並返回更多細節,可自定義錯誤類型的struct
- 只要結構體實現了
Error()
這個方法就能實現error
這個接口
1 | package main |
result
1 | FileNotFound: |
判斷錯誤屬於何種類型
- 判斷錯誤是否為自定義的錯誤類型
- 可使用類型斷言來判斷,因為
error
類型為interface
example 1
1 | func main(){ |
result
1 | It's FileNotFoundError Type |
example 2
1 | func main(){ |
result
1 | is type FileNotFoundError type |
tips
- 實際業務開發中使用
errors.New()
方法還是比較多
panic & recover
- 請參考內置函數章節有詳盡的panic與recover的介紹