GoLang教程——错误处理
Go 对错误处理的态度非常直白:错误就是一种值(Values),不是异常(Exceptions)。我们通过函数返回值来传递错误,并显式地检查它们。只有在真正的不可恢复情况(如数组越界)下,才会使用 panic。 示例代码 1package main 2 3import ( 4 "errors" 5 "fmt" 6) 7 8// 定义一个除法函数,返回 result 和 error 9func divide(a, b int) (int, error) { 10 if b == 0 { 11 // 使用 errors.New 创建一个简单的错误对象 12 return 0, errors.New("cannot divide by zero") 13 } 14 return a / b, nil 15} 16 17// 演示 panic 和 recover 18func safeCall() { 19 // defer 必须在 panic 发生前定义 20 defer func() { 21 // recover() 捕获 panic,如果返回值不为 nil,说明发生了 panic 22 if r := recover(); r != nil { 23 fmt.Println("Recovered from panic:", r) 24 } 25 }() 26 27 panic("Something went wrong terribly!") 28 fmt.Println("This line will not execute") 29} 30 31func main() { 32 // 1. 标准错误处理 33 res, err := divide(10, 0) 34 if err != nil { 35 fmt.Println("Error:", err) 36 } else { 37 fmt.Println("Result:", res) 38 } 39 40 // 2. 演示从 panic 中恢复 41 fmt.Println("Starting safeCall...") 42 safeCall() 43 fmt.Println("Program continues...") 44} 关键点解释 error 接口 Go 内置的 error 是一个接口,只包含一个方法 Error() string。 ...