打开文件需要关闭, 打开数据库连接, 连接需要释放. 这些成对出现的就是资源管理. 有时候我们虽然释放了, 但是程序在中间出错了, 那么可能导致资源释放失败. 如何保证打开的文件一定会被关闭呢?...这就是资源管理与错误处理考虑的一个原因
一. defer
1. defer保证在函数结束时发生.
2. defer列表为先进后出
3. 参数在defer语句时计算....这两个操作都应该应该是成对出现的, 因此, 用defer 语句, 避免后面写着写着忘了, 也保证即使出错了, 也能够执行defer语句的内容
那么 参数在defer语句时计算 是什么意思呢?...在defer 中调用
2. 获取panic的值
3....将出现异常的位置捕获出来, 并且, 打印到页面
第一步: 自定一定recover, 代替server.go中的recover
// 封装error
func WrapError(handler Handler