在 Golang 中,錯誤處理機制一般是函數(shù)返回時使用的,是對外的接口,而異常處理機制 panic-recover 一般用在函數(shù)內(nèi)部。
func Foo(param int) (n int, err error) {
// ...
}
if n, err := Foo(0); err != nil {
// 錯誤處理
}
package main
import (
"errors"
"fmt"
)
func requireDual(n int) (int, error) {
if n1 == 1 {
return -1, errors.New("您輸入不是雙數(shù)") //生成一個簡單的 error 類型
}
return n, nil
}
func main() {
if result, err := requireDual(101); err != nil {
fmt.Println("錯誤:", err)
} else {
fmt.Println("結(jié)果:", result)
}
}
package main
import (
"fmt"
)
type dualError struct {
Num int
problem string
}
func (e dualError) Error() string {
return fmt.Sprintf("參數(shù)不正確,因為\"%d\"不是雙數(shù)", e.Num)
}
func requireDual(n int) (int, error) {
if n1 == 1 {
return -1, dualError{Num: n}
}
return n, nil
}
func main() {
if result, err := requireDual(101); err != nil {
fmt.Println("錯誤:", err)
} else {
fmt.Println("結(jié)果:", result)
}
}