Go语言-错误处理和资源管理
defer调用
- 确保在调用函数结束时发生;
- 参数在defer语句时计算;
- defer列表为后进先出;
## return不会影响defer的调用
## 由输出结果可以先进后出
package main
import "fmt"
func tryDefer() {
defer fmt.Println(1)
defer fmt.Println(2)
fmt.Println(3)
return
}
func main() {
tryDefer() // 输出结果:3 2 1
}
用写入文件的实体例子,加深了解
## 我们可以更加顺畅的写代码,创建完可以用defer直接写colse
func writeFile(filename string) {
file, err := os.Create(filename)
if err != nil {
panic(err)
}
defer file.Close()
// 先写入缓存
writer := bufio.NewWriter(file)
defer writer.Flush()
f := fib.Fiboncci()
for i := 0; i < 20; i++ {
fmt.Fprintln(writer, f())
}
}
错误处理概念
#这边详解一下:就是如果是已知的错误我们可以通过获取对应的错误信息进行相应的处理,那如果是未知的错误,我们可以直接输出
if err != nil {
if pathError, ok := err.(*os.PathError); !ok {
panic(err)
} else {
fmt.Printf("%s , %s, %s\n",
pathError.Op, pathError.Path, pathError.Err)
}
}
服务器统一出错处理1
1.如何实现统一的错误逻辑
本文详细介绍了Go语言中的错误处理和资源管理方法,包括使用defer语句确保函数结束时资源正确关闭,通过panic和recover进行服务器统一出错处理。并通过写入文件的实际案例,演示了如何利用defer简化代码,提高编程效率。

被折叠的 条评论
为什么被折叠?



