panic与recover

1年以前  |  阅读数:128 次  |    

func panic(interface{})func recover() interface{}是Golang中用于错误处理的两个函数。

panic的作用就是抛出一条错误信息,从它的参数类型可以看到它可以抛出任意类型的错误信息。在函数执行过程中的某处调用了panic,则立即抛出一个错误信息,同时函数的正常执行流程终止,但是该函数中panic之前定义的defer语句将被依次执行。之后该goroutine立即停止执行。

recover()用于将panic的信息捕捉。recover必须定义在panic之前的defer语句中。在这种情况下,当panic被触发时,该goroutine不会简单的终止,而是会执行在它之前定义的defer语句。

相关示例代码如下:

package main

import (
    "errors"
    "fmt"
)

func deferPrint() (i int) {
    defer func() {
        fmt.Println(i)
        i = 4
    }()

    return 2
}

func panicTest() {
    defer func() {
        if p := recover(); p != nil {
            fmt.Println("recover panic")
        }
    }()

    panic(errors.New("this is a panic"))
}

func main() {
    fmt.Println("before panic")

    panicTest()

    fmt.Println("after panic")
}

相关文章:


SSH 登录失败:Host key verification failed

PHP分页显示制作详细讲解

PHP自定义函数获取搜索引擎来源关键字的方法

将二进制数据转为16进制以便显示

在Zeus Web Server中安装PHP语言支持

让你成为最历害的git提交人

Java生成UUID

再谈PHP中单双引号的区别详解

获取IMSI

PHP实现简单爬虫的方法

php+ajax+json 详解及实例代码

Python 2与Python 3版本和编码的对比

php实现数组中索引关联数据转换成json对象的方法

php封装的page分页类完整实例

wget使用技巧

桌面中心(一)创建数据库

PHP设计模式之工厂模式与单例模式

php数组合并array_merge()函数使用注意事项

getAttribute和getAttributeNode

Yii2汉字转拼音类的实例代码