Go语言异常处理error、panic、recover的使用
异常处理
Go 语言引入了一个关于错误处理的标准模式,即 error 接口,它是 Go 语言内建的接口类型,该接口的定义如下:
package errors
func New(text string) error {
return &errorString{text}
}
// errorString is a trivial implementation of error.
type errorString struct {
s string
}
func (e *errorString) Error() string {
return e.s
}
- 通过fmt包进行使用errorf接口
- 通过自带的errors包进行调用

常用在我们对检测程序是否正常

panic
在通常情况下,向程序使用方报告错误状态的方式可以是返回一个额外的 error 类型值。
但是,当遇到不可恢复的错误状态的时候,如数组访问越界、空指针引用等,这些运行时错误会引起 painc 异常。在一般情况下,我们不使用 panic 函数来报告普通的错误,而应该只把它作为报告致命错误的一种方式。当某些不应该发生的场景发生时,就调用panic。
一般而言,当 panic异常发生时,程序会中断运行,并立即执行在该 goroutine(可以先理解成线程,在中被延迟的函数(defer机制)。随后,程序崩溃并输出日志信息。日志信息包括 panic value 和函数调用的堆栈跟踪信息。
不是所有的 panic 异常都来自运行时,直接调用内置的 panic 函数也会引发 panic 异常: panic函数接受任何值作为参数。
func panic(v interface{})
直接调用panic函数
直接调用内置的 panic 函数也会引发 panic 异常。

数组越界导致panic

recover
运行时 panc 异常一旦被引发就会导致程序崩溃。Go语言为我们提供了专用于“拦截”运行时 panic 的内建所数–recover。它可以是当前的程序从运行时 panic 的状态中恢复并重新获得流程控制权。
fune recover()interface{}
注意:recover只有在defer调用的所数中有效。
如果调用了内置函数recover,并且定义该 defer 语句的函数发生了 panic 异常,recover 会使程序从 panic 中恢复,并返回 panic value。导致panic 异常的函数不会继续运行,但能正常返回。在未发生 panic 时调用recover,recover 会返回 nil。

到此这篇关于Go语言异常处理error、panic、recover的使用的文章就介绍到这了,更多相关Go语言异常处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
golang使用http client发起get和post请求示例
这篇文章主要介绍了golang使用http client发起get和post请求示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-02-02
go语言VScode see 'go help modules' (exit statu
最近上手学习go语言,准备在VSCode上写程序的时候却发现出了一点问题,下面这篇文章主要给大家介绍了关于go语言VScode see 'go help modules'(exit status 1)问题的解决过程,需要的朋友可以参考下2022-07-07
Go语言中int、float、string类型之间相互的转换
golang是强类型语言,在应用过程中类型转换基本都会用到,下面这篇文章主要给大家介绍了关于Go语言中int、float、string类型相互之间的转换,需要的朋友可以参考下2022-01-01


最新评论