56_异常处理error,errors和painc的使用
Posted zhaopp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了56_异常处理error,errors和painc的使用相关的知识,希望对你有一定的参考价值。
Go语言引入了一个关于错误处理的标准模式,即error接口,它是Go语言内建的接口类型
//error和errors的使用
package main
import (
"errors"
"fmt"
)
func main()
//调用errorf()方法,返回一个error类型的字符串(error是一个接口类型)
var err1 error = fmt.Errorf("this is a new time")
fmt.Println(err1)
//直接调用errors包的new方法,作用和errorf一样
err2 := errors.New("this is a good new")
fmt.Println(err2)
当遇到不可恢复的错误状态的时候,如数组访问越界、空指针引用等,这些运行时错误会引起painc异常。这时,上述错误处理方式显然就不适合了。反过来讲,在一般情况下,我们不应通过调用panic函数来报告普通的错误,而应该只把它作为报告致命错误的一种方式。当某些不应该发生的场景发生时,我们就应该调用panic。
当panic异常发生时,程序会中断运行,并立即执行在该goroutine(可以先理解成线程,在中被延迟的函数(defer 机制)。随后,程序崩溃并输出日志信息。日志信息包括panic value和函数调用的堆栈跟踪信息。
不是所有的panic异常都来自运行时,直接调用内置的panic函数也会引发panic异常;panic函数接受任何值作为参数。
func panic(v interface)
//panic代码
package main
import "fmt"
func test(a, b int) (res int)
if b == 0
panic("this is a zero")
else
res = a / b
return
func main()
//可以隐式调用painc,使程序中断
var a []int = []int1, 2, 3, 4
result := test(1, 0) //程序会在此处中断,不会往下执行
fmt.Println(result)
for _, value := range a
fmt.Println(value)
以上是关于56_异常处理error,errors和painc的使用的主要内容,如果未能解决你的问题,请参考以下文章
PCL异常处理:pcl 1.8.13rdpartyoostincludeoost-1_64oost ypeofmsvc ypeof_impl.hpp(125): error(代码片段