本文執行個體講述了GO語言標準錯誤處理機制error用法。分享給大家供大家參考。具體分析如下:
在 Golang 中,錯誤處理機制一般是函數返回時使用的,是對外的介面,而異常處理機制 panic-recover 一般用在函數內部。
error 類型介紹
error 類型實際上是抽象了 Error() 方法的 error 介面,Golang 使用該介面進行標準的錯誤處理。
複製代碼 代碼如下:
type error interface {
Error() string
}
一般情況下,如果函數需要返回錯誤,就將 error 作為多個傳回值中的最後一個(但這並非是強制要求)。參考模型:
複製代碼 代碼如下:
func Foo(param int) (n int, err error) {
// ...
}
if n, err := Foo(0); err != nil {
// 錯誤處理
}
這就是 error 的使用方法,與其他語言的異常相比,Golang 的方法相對更加容易、直觀。
代碼1:經典使用方法
複製代碼 代碼如下:
package main
import (
"errors"
"fmt"
)
func requireDual(n int) (int, error) {
if n&1 == 1 {
return -1, errors.New("您輸入不是雙數") //產生一個簡單的 error 類型
}
return n, nil
}
func main() {
if result, err := requireDual(101); err != nil {
fmt.Println("錯誤:", err)
} else {
fmt.Println("結果:", result)
}
}
輸出結果:
錯誤: 您輸入不是雙數
你有沒有覺得 Golang 的這種錯誤的處理機制非常的簡潔啊,呵呵!
代碼2:擴充下上面的代碼,帶自訂參數的錯誤輸出
複製代碼 代碼如下:
package main
import (
"fmt"
)
type dualError struct {
Num int
problem string
}
func (e dualError) Error() string {
return fmt.Sprintf("參數不正確,因為\"%d\"不是雙數", e.Num)
}
func requireDual(n int) (int, error) {
if n&1 == 1 {
return -1, dualError{Num: n}
}
return n, nil
}
func main() {
if result, err := requireDual(101); err != nil {
fmt.Println("錯誤:", err)
} else {
fmt.Println("結果:", result)
}
}
輸出結果
錯誤: 參數不正確,因為"101"不是雙數
希望本文所述對大家的GO語言程式設計有所協助。