Go语言编程快速入门:错误处理
P30 go28 - 错误处理
错误处理
- 函数 和方法可以返回多个值
- 管理,最后的返回值是用来表示错误的
- 如果没有错误,即为nil
files, err := ioutil.ReadDir(".")
if err != nil {
print("err", err)
os.Exit(1)
}
for _, file := range files {
fmt.Println(file.Name())
}
优雅的处理错误
- 尽量简化错误处理代码
- Errors are values
- Don't just check errors, handle them gracefully
- interface {} say nothing
- A little copying is better than alittle dependency
文件写入
- 写入文件可能出错
- 文件写完之后,必须关闭
- 内置类型 error
defer 关键字
- Go可以确保所有defferd 的函数可以在函数返回前执行
- 可以处理异常情况,文件没有关闭
- 可以是什么问题的函数或者方法
- defer 并不是专门做错误处理的
package main
import (
"os"
)
func proverbs(name string) error {
f, err := os.Create(name)
if err != nil {
return err
}
defer f.Close()
return err
}
func main() {
proverbs("test.txt")
}
错误类型断言
// 当错误为 sudokuError 时,走 ok 语句
err.(SudokuError)
参考