Golang的error和panic

编程入门 行业动态 更新时间:2024-10-28 16:16:50

<a href=https://www.elefans.com/category/jswz/34/1769831.html style=Golang的error和panic"/>

Golang的error和panic

博客主页:🏆看看是李XX还是李歘歘 🏆

🌺每天不定期分享一些包括但不限于计算机基础、算法、后端开发相关的知识点,以及职场小菜鸡的生活。🌺

💗点关注不迷路,总有一些📖知识点📖是你想要的💗 

目录

Error

Panic


 Golang有两种错误处理机制,分别是error和panic。

error一般是程序员可预知的,在意料之中的错误,会进行合适的处理,如打开件失败、检测输入是否合法等。而panic是不应该出现问题的地方出现了问题,程序员无法预知的异常,例如空指针或数组越界等。

Error

Eoor是通过返回值的形式来出来,要么忽略错误,要么处理错误,一般我们会在发生错误时,种植程序,返回error给调用者并且记录错误日志,对于golang这种设计方式,我们会在代码中写大量的if判断,以便做出决定。

func main() {conent,err:=ioutil.ReadFile("filepath")if err !=nil{//错误处理//记录error信息}else {fmt.Println(string(conent))}
}

对于err如果是nil就代表没有错误,如果不是nil就代表程序出问题了,需要对错误进行处理了。

Go 提供了两种创建error的方法,分别是:errors.New和fmt.Errorf

func main() {fmt.Println(errors.New("错误"))fmt.Println(fmt.Errorf("错误"))
}

Panic

Panic是程序员无法预知的,如果没有提前设置解决方案,一旦出现,将直接导致程序崩溃。Go的类型系统会在编译时捕获很多错误,但有些错误,如数组访问越界、空指针引用等只能在运行时检查。这些运行时错误会引起painc异常。

在Golang中,panic、defer和recover经常同时出现,用于异常处理,类似在Java中的try catch finally 处理机制。

recover 是一个 Go 语言的内建函数,可以让进入宕机流程中的 goroutine 恢复过来。recover只在defer调用的函数中有效,并且defer要在panic之前先注册,否则不能捕获异常。当panic被捕获到后,被注册的函数将获得程序控制权。

func dopanic()  {err := recover()if err!=nil {fmt.Println("panic")}
}func main() {defer dopanic()n := 0res := 1 / nfmt.Println(res)
}

其他

当panic异常发生时,程序会中断运行,并立即执行在该goroutine(可以先理解成线程)中被延迟的函数(defer 机制), panic() 后面的代码将不会被运行,这也是为什么defer要在panic之前先注册的原因。

 

参考:

(43条消息) 详谈GoLang的panic和error_golang panic_渣渣帅的博客-CSDN博客

(43条消息) Golang错误处理机制(error 与 panic)_Marvellous丶的博客-CSDN博客_panic和error的区别 

更多推荐

Golang的error和panic

本文发布于:2023-06-15 05:10:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/720888.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Golang   error   panic

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!