当前位置: 首页 > 编程笔记 >

go语言异常panic和恢复recover用法实例

平羽
2023-03-14
本文向大家介绍go语言异常panic和恢复recover用法实例,包括了go语言异常panic和恢复recover用法实例的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了go语言异常panic和恢复recover用法。分享给大家供大家参考。具体分析如下:

go中可以抛出一个panic的异常,然后在defer中通过recover捕获这个异常,然后正常处理
在一个主进程,多个go程处理逻辑的结构中,这个很重要,如果不用recover捕获panic异常,会导致整个进程出错中断

package main

import "fmt"

func main() {

defer func() {     //必须要先声明defer,否则不能捕获到panic异常

fmt.Println("c")

if err := recover(); err != nil {

fmt.Println(err)    //这里的err其实就是panic传入的内容,55

}

fmt.Println("d")

}()

f()   

}

func f() {

fmt.Println("a")

panic(55)

fmt.Println("b")

fmt.Println("f")

}

希望本文所述对大家的Go语言程序设计有所帮助。

 类似资料:
  • 本文向大家介绍GO语言异常处理机制panic和recover分析,包括了GO语言异常处理机制panic和recover分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了GO语言异常处理机制panic和recover。分享给大家供大家参考。具体如下: Golang 有2个内置的函数 panic() 和 recover(),用以报告和捕获运行时发生的程序错误,与 error 不同,panic

  • 主要内容:让程序在崩溃时继续执行,panic 和 recover 的关系Recover 是一个Go语言的内建函数,可以让进入宕机流程中的 goroutine 恢复过来,recover 仅在延迟函数 defer 中有效,在正常的执行过程中,调用 recover 会返回 nil 并且没有其他任何效果,如果当前的 goroutine 陷入恐慌,调用 recover 可以捕获到 panic 的输入值,并且恢复正常的执行。 通常来说,不应该对进入 panic 宕机的程序做任何处

  • 正如名字一样,这个(recover)内建函数被用于从 panic 或 错误场景中恢复:让程序可以从 panicking 重新获得控制权,停止终止过程进而恢复正常执行。 recover 只能在 defer 修饰的函数(参见 6.4 节)中使用:用于取得 panic 调用中传递过来的错误值,如果是正常执行,调用 recover 会返回 nil,且没有其它效果。 总结:panic 会导致栈被展开直到 d

  • 主要内容:手动触发宕机,在运行依赖的必备资源缺失时主动触发宕机,在宕机时触发延迟执行语句Go语言的类型系统会在编译时捕获很多错误,但有些错误只能在运行时检查,如数组访问越界、空指针引用等,这些运行时错误会引起宕机。 宕机不是一件很好的事情,可能造成体验停止、服务中断,就像没有人希望在取钱时遇到 ATM 机蓝屏一样,但是,如果在损失发生时,程序没有因为宕机而停止,那么用户将会付出更大的代价,这种代价可以是金钱、时间甚至生命,因此,宕机有时也是一种合理的止损方法。 一般而言,当宕机发生时

  • 本文向大家介绍Go中recover与panic区别详解,包括了Go中recover与panic区别详解的使用技巧和注意事项,需要的朋友参考一下 概念 panic 与 recover 是 Go 的两个内置函数,这两个内置函数用于处理 Go 运行时的错误。 panic用于主动抛出错误, recover 用来捕获panic 抛出的错误。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支

  • 一个用到 recover 的程序(参见第 13.3 节)停掉了服务器内部一个失败的协程而不影响其他协程的工作。 func server(workChan <-chan *Work) { for work := range workChan { go safelyDo(work) // start the goroutine for that work } }