美文网首页
golang-panic 和 recover

golang-panic 和 recover

作者: 爱吃豆包 | 来源:发表于2019-12-17 20:27 被阅读0次

panic (抛出异常)

停止当前函数执行
一直向上返回,执行每一层的defer
如果没有遇见recover, 程序退出

recover (捕获异常)

仅在defer调用中使用
获取panic的值
如果无法处理,可重新panic

package main

import (
    "errors"
    "fmt"
)

func tryRecover(){
    // 通过 defer 获取 panic 的错误
    defer func() {
        r := recover()

        // 如果接收到的是一个 error 类型
        if err, ok := r.(error); ok {
            // 捕获异常
            fmt.Println("捕获了这个错误!", err)
        } else {
            // 重新抛出一个异常
            panic(r)
        }

    }()
    panic(errors.New("出现错误了!"))

    // 这个 painc 是捕获不了的, 因为这个里面放的不是错误
    // 那么就只能由上面的重新抛出一个异常
    // panic(123)

}

func main() {
    tryRecover()
}

相关文章

  • golang-panic 和 recover

    panic (抛出异常) 停止当前函数执行一直向上返回,执行每一层的defer如果没有遇见recover, 程序...

  • go 的异常处理:panic 和 recover

    panic 函数 和 recover 函数 panic 和 recover 在使用方法上更接近于 try/catc...

  • panic 和 recover

    什么是 panic? 在 Go 语言中,程序中一般是使用错误来处理异常情况。对于程序中出现的大部分异常情况,错误就...

  • 聊聊golang的panic与recover

    序 本文主要研究一下golang的panic与recover panic与recover recover在如下三种...

  • 错误

    错误 错误类型表示 自定义error panic和recover

  • 2017-12-04

    Golang,Panic,Defer,Recover 在golang中,recover在defer里发挥作用。 一...

  • defer,panic 和 Recover

    翻译自:https://blog.golang.org/defer-panic-and-recover Golan...

  • panic和recover嵌套

    原文:【Golang】panic和recover多套几层你还hold住吗?_哔哩哔哩_bilibili[https...

  • 错误与恢复

    panic和recover 一.声明func panic(interface{}) //尽量少用func reco...

  • RECOVER

    好吧 不再犹豫了 我其实也明白 以后的日子 苦中寻乐吧 就这样吧 人总是在找适合自己的生活 我也会努力的 打起精神...

网友评论

      本文标题:golang-panic 和 recover

      本文链接:https://www.haomeiwen.com/subject/giuenctx.html