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)

  • 相关阅读:
    NOIP2015 斗地主
    BZOJ 2120: 数颜色
    BZOJ 1014: [JSOI2008]火星人prefix
    BZOJ 4665: 小w的喜糖
    BZOJ 3665: maths
    BZOJ 3270: 博物馆
    BZOJ 1419: Red is good
    【转】二分图的最大匹配
    POJ 3026 Borg Maze(Prim+BFS建邻接矩阵)
    POJ 2485 Highway(Prim+邻接矩阵)
  • 原文地址:https://www.cnblogs.com/waitmoon/p/13893752.html
Copyright © 2011-2022 走看看