golang的panic与recover

一、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 
golang后端技术

golang interface的使用

2022-6-4 11:09:54

golang后端技术

解答一道golang面试题

2022-6-4 11:20:40

搜索