panic与recover

5年以前  |  阅读数:387 次  |  编程语言:Golang 

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")
}
 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例