一、panic

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

二、recover

recover()用于将panic的信息捕捉。recover必须定义在panic之前的defer语句中。在这种情况下,当panic被触发时,该goroutine不会简单的终止,而是会执行在它之前定义的defer语句。
建议每起一个goroutine,都defer统一捕获下异常
谨记用defer统一捕获异常只对当前的goroutine有效,goroutine的异常并不会向上传递给main主函数

package main

import "fmt"
import "math"

func foo(a int) {
    defer fmt.Println("foo退出来了")

    defer func() {

        if r := recover(); r != nil {
            fmt.Printf("捕获到的错误:%sn", r)
        }
    }()

    if a 
由于版权原因,本站共享资源只供云盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件并发送到[email protected]告知,我们会在收到邮件后72小时内删除。
想开点 » golang的panic与recover