错误处理

mac2024-04-01  40

Go错误处理

在Go语言中,一种约定是在调用可能出现问题的方法或函数时,返回一个类型为错误的值。这意味着如果出现了问题,函数通常不会引发异常,而让调用者决定如何处理错误。

package main import ( "fmt" "io/ioutil" ) func main() { file, err := ioutil.ReadFile("mod.txt") if err != nil { fmt.Println(err) return } fmt.Printf("%s", file) // 输出 open mod.txt: The system cannot find the file specified. }

在Go语言中,错误是一个值。便准库声明了接口error。

type error interface { Error() string }

这个接口只有一个方法Error,它返回一个字符串。

创建错误

错误类型

package main import ( "errors" "fmt" ) func main() { err := errors.New("something went wrong") if err != nil { fmt.Println(err) // log.Fatal(err) } }

设置错误格式

除了errors包外,标准库中的fmt包还提供了方法Errorf,可用于设置返回的错误字符串的格式。

package main import ( "fmt" ) func main() { name, role := "moddemod", "w" err := fmt.Errorf("The %v %v quit", name, role) if err != nil { fmt.Println(err) } }

从函数返回错误

package main import ( "fmt" ) func Half(numberToHalf int) (int, error) { if numberToHalf%2 != 0 { return -1, fmt.Errorf("Cannot half %v", numberToHalf) } return numberToHalf / 2, nil } func main() { n, err := Half(19) if err != nil { fmt.Println(err) return } fmt.Println(n) }
最新回复(0)