Go 面试题 004:Go 有异常类型吗?

共 880字,需浏览 2分钟

 ·

2021-09-28 09:29

大家好,我是明哥。

欢迎大家再次来到  Go 语言面试题库 这个专栏

本专栏内容,已经上传 github:https://github.com/iswbm/golang-interview

请大家帮帮忙去点个小 ⭐⭐,在那里我对题库进行了分类整理

 

第四题

请听题:

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类型的变量进行赋值,以便上层函数继续走错误处理流程。


   


喜欢明哥文章的同学
欢迎长按下图订阅!

⬇⬇⬇


浏览 141
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报