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的使用的主要内容,如果未能解决你的问题,请参考以下文章

Go语言中异常处理painc()和recover()的用法

Python3 爬虫03_urllib.error异常处理

PCL异常处理:pcl 1.8.13rdpartyoostincludeoost-1_64oost ypeofmsvc ypeof_impl.hpp(125): error(代码片段

翻译:《实用的Python编程》03_03_Error_checking

exception和error异同

exception和error异同