Go语言编程快速入门:错误处理

P30 go28 - 错误处理
更新于: 2022-01-22 02:43:53

错误处理

  • 函数 和方法可以返回多个值
  • 管理,最后的返回值是用来表示错误的
  • 如果没有错误,即为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")
}

错误类型断言

Error 类型断言
// 当错误为 sudokuError 时,走 ok 语句
err.(SudokuError)

参考