《左耳听风》 学习笔记 day34

143 阅读2分钟

Go语言通过error类型来表示错误,并通过panic、recover与defer来实现异常处理机制。这里对Go的错误处理做一个较为详细的总结:1. error类型是一个接口,仅包含Error() string方法。我们可以定义实现error接口的类型来表示特定的错误。也常用errors.New直接创建error。2. panic用于中止当前流程,开始异常处理流程。当函数遇到无法恢复的错误时应调用panic。panic会中止 defer、跳出该goroutine,开始找寻最近的recover。3. recover用于从panic异常中恢复。使用defer语句调用的函数在外层函数 panic 时必定会执行,我们可以在这些函数中调用 recover 来捕获panic异常。4. defer语句用于推迟函数的执行。推迟的函数会在外层函数返回前被执行。这常用于资源清理、解锁等操作。defer语句可以让我们在代码一开始就声明资源清理逻辑,而不用在每个返回路径上增加清理代码。5. 我们应该在代码一开始使用defer释放锁或资源,然后使用panic抛出无法恢复的错误。最后在顶层使用recover捕获并处理这些panic。这样可以简化错误处理逻辑,避免在每个路径都处理错误。6. http包的业务逻辑里不应调用panic。http应该在顶层使用recover来捕获并恢复panic,向客户端返回一个HTTP错误。这样可以防止未捕获的panic导致服务器崩溃。7. 我们应该针对可预料的错误使用error,而将不可预料的错误通过panic抛出。调用的包应确保对可预料错误进行检查,并适当处理。而对panic应在顶层进行recover。这样可以实现简单的包间错误传递。总体来说,Go具有简单高效的错误处理机制。panic与recover实现了简单的异常处理,而error类型则用于表示预料的错误。恰当地使用这三者可以简化我们的错误处理逻辑,实现出健壮的程序。

此文章为4月Day28学习笔记,内容来源于极客时间《左耳听风》 这门课真的非常好,推荐大家看看