Go语言painc( 宕机)和recover(恢复)

Go语言painc( 宕机)和recover(恢复)签名函数 painc iinterface 宕机 revover interface 恢复 painc 有两种情况产生一种是程序主动调用 painc 函数 另一种是程序产生运行时错误产生

大家好,欢迎来到IT知识分享网。

基本概念

painc宕机代码,发生宕机后后续代码全部都不执行了,一层一层向上抛异常

func Test1() { 
    fmt.Println("执行test1") } func TestPanic() { 
    panic("宕机了") } func Test2() { 
    fmt.Println("执行test2") } func main() { 
    Test1() TestPanic() Test2() } 

输出

执行test1 panic: 宕机了 goroutine 1 [running]: main.TestPanic(...) E:/workspace/go/study/main.go:10 main.main() E:/workspace/go/study/main.go:19 +0x65 

defer 代码 延迟自动执行代码,使用了defer关键字的会在所有正常代码执行完成后先入后出执行。

func Test(int uint8) { 
    fmt.Println(int) } func TestPanic() { 
    panic("宕机了") } func main() { 
    defer Test(1) defer Test(2) fmt.Println("输出") Test(3) //TestPanic() Test(4) defer Test(5) } 

输出

输出 3 4 5 2 1 
 func Test(int uint8) { 
    fmt.Println(int) } func TestPanic() { 
    panic("宕机了") } func TestRecover() { 
    defer func() { 
    //捕获panic,并恢复程序使其继续运行 if err := recover(); err != nil { 
    fmt.Println("recover") } }() TestPanic() //主动抛出异常 } func main() { 
    Test(1) // 这里正常执行 TestRecover() // 这里宕机并且恢复让程序正常执行 Test(2) // 程序恢复正常执行 } 

输出

1 recover 2 

使用场景

  • 程序遇到了无法正常执行下去的错误,主动调用panic函数结束程序运行
  • 在调试程序中主动调用panic实现快速退出,然后打印堆栈信息快速的定位错误位置
    Go语言中有两种处理错误的方式,一种是使用panic和recover的抛出捕获机制,另一种时使用error错误类型(后边会介绍)

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/114667.html

(0)
上一篇 2025-12-07 15:15
下一篇 2025-12-07 15:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信