Go Go 有异常类型吗?详解

在解答这个问题前,有必要对错误和异常做一个解释

在 Go 没有异常类型,只有错误类型(Error)。

一个函数要是想返回错误,通常会使用返回值来表示异常状态,它很像 C语言中的错误码,可逐层返回,直到被处理。

f, err := os.Open("test.txt")
if err != nil {
    log.Fatal(err)
}

Go 语言中虽然没有异常的概念,但是却有更为恐怖的 panic ,由于有了 recover,在一定程度上, panic 可以类比做异常。

Golang错误和异常(panic)是可以互相转换的:

  1. 错误转异常:比如程序逻辑上尝试请求某个URL,最多尝试三次,尝试三次的过程中请求失败是错误,尝试完第三次还不成功的话,失败就被提升为异常了。
  2. 异常转错误:比如panic触发的异常被recover恢复后,将返回值中error类型的变量进行赋值,以便上层函数继续走错误处理流程。

教程来源于Github,感谢iswbm大佬的无私奉献,致敬!

技术教程推荐

人工智能基础课 -〔王天一〕

Python核心技术与实战 -〔景霄〕

即时消息技术剖析与实战 -〔袁武林〕

Serverless入门课 -〔蒲松洋(秦粤)〕

Redis核心技术与实战 -〔蒋德钧〕

实用密码学 -〔范学雷〕

React Hooks 核心原理与实战 -〔王沛〕

手把手带你写一门编程语言 -〔宫文学〕

超级访谈:对话汤峥嵘 -〔汤峥嵘〕