zoukankan      html  css  js  c++  java
  • Go 常见的引发 panic 的情况

    1. 数组下标越界(运行时错误)
    package main
    import "fmt"
    func main() {
        var s []string
        fmt.Println(s)
        fmt.Println(s[0])
    }
    

    运行结果:

    []
    panic: runtime error: index out of range
    
    goroutine 1 [running]:
    main.main()
    
    1. 空指针异常(运行时错误)
    package main
    import "fmt"
    type Person struct {
        Name string
        Age  int
    }
    func main() {
        var p *Person
        fmt.Println(p)
        fmt.Println(p.Name)
    }
    

    运行结果:

    <nil>
    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x10914c8]
    
    goroutine 1 [running]:
    main.main()
    
    1. 类型断言失败(接口转换异常)
    package main
    import "fmt"
    func main() {
        add(20, 18)
        add(1, "hello")
    }
    func add(a, b interface{}) {
        i := a.(int)
        j := b.(int)
        fmt.Println(i+j)
    }
    

    运行结果:

    panic: interface conversion: interface {} is string, not int
    38
    
    goroutine 1 [running]:
    main.add(0x10a0f60, 0x10d6840, 0x10a1660, 0x10d6b90)
    
    1. 通道为空,通道已关闭(写数据)
    package main
    func main() {
        var ch chan int
        close(ch)
    }
    

    运行结果:

    panic: close of nil channel
    
    goroutine 1 [running]:
    main.main()
    package main
    func main() {
        var ch chan int
        ch = make(chan int,0)
        close(ch)
        ch <- 108
    }
    

    运行结果:

    panic: send on closed channel
    
    goroutine 1 [running]:
    main.main()
    
    1. 死锁,所有线程睡眠(致命错误)
      这一条是致命错误,不属于异常,但是跟异常一样,会导致程序挂掉。
    package main
    func main() {
        var ch chan int
        ch = make(chan int)
        ch <- 108
    }
    

    运行结果:

    fatal error: all goroutines are asleep - deadlock!
    
    goroutine 1 [chan send]:
    main.main()
    

    http://www.luyixian.cn/news_show_23437.aspx




    链接:https://www.jianshu.com/p/b9a2c59b2dd3

  • 相关阅读:
    nyoj 230/poj 2513 彩色棒 并查集+字典树+欧拉回路
    nyoj 211 Cow Contest
    nyoj 203 三国志 dijkstra+01背包
    nyoj 170 网络的可靠性
    nyoj 120 校园网络
    nyoj 115 城市平乱 dijkstra最短路
    nyoj 42 一笔画问题 欧拉路径
    nyoj 38 布线问题
    hdu 2089 不要62--数位dp入门
    nyoj 712 探 寻 宝 藏--最小费用最大流
  • 原文地址:https://www.cnblogs.com/brady-wang/p/15265867.html
Copyright © 2011-2022 走看看