zoukankan      html  css  js  c++  java
  • 2020-10-28:go中,好几个go程,其中一个go程panic,会产生什么问题?

    福哥答案2020-10-28:

    1.运行时恐慌,当panic被抛出异常后,如果我们没有在程序中添加任何保护措施的话,程序就会打印出panic的详细情况之后,终止运行。
    2.有panic的子协程里的defer能执行,主协程和其他子协程里的defer不执行或者只能执行一半,这打破了【defer函数一定执行】的规则。

    go代码如下:

    package main
    
    import (
        "fmt"
        "time"
    )
    
    func main() {
        defer func() {
            recover()
        }()
        defer func() {
            fmt.Println("defer main")
        }()
        go func() {
            fmt.Println("goroutine 1 start")
            defer func() {
                fmt.Println("defer 1")
            }()
            panic("panic1")
            fmt.Println("goroutine 1 end")
    
        }()
        go func() {
            fmt.Println("goroutine 2 start")
            defer func() {
                fmt.Println("defer 2")
            }()
            time.Sleep(1)
            fmt.Println("goroutine 2 end")
        }()
        time.Sleep(time.Second * 100)
    }
    

      

    执行结果如下:


    ***
    [2020-10-28:go中,好几个go程,其中一个go程panic,会产生什么问题?](https://bbs.csdn.net/topics/398054814)

  • 相关阅读:
    第二次冲刺阶段第四天
    第二次冲刺阶段第三天
    第二次冲刺阶段第二天
    人月神话阅读笔记03
    第二次冲刺阶段第一天
    学习进度条(十二)
    课堂练习-找水王
    学习进度条(十一)
    学习进度表第十周
    构建之法阅读笔记06
  • 原文地址:https://www.cnblogs.com/waitmoon/p/13893752.html
Copyright © 2011-2022 走看看