golang常见引发panic场景
2023-05-22 16:00:15 4 举报
AI智能生成
Golang中的panic是一种异常处理机制,当程序遇到无法处理的错误时,会触发panic。以下是一些常见的引发panic的场景: 1. 空指针解引用:访问一个未初始化或为nil的指针变量。 2. 数组越界:访问数组超出其范围的元素。 3. 函数返回多个值,但只用一个变量接收。 4. 并发读写同一资源(如切片、map等),导致数据竞争和不一致。 5. 使用defer延迟执行的函数中抛出异常,但在调用该函数之前已经panic。
作者其他创作
大纲/内容
越界
数组越界
字符串越界
空指针引用
panic
直接引用空指针的字段
不panic
调用的成员方法没有引用到该结构体的字段
类型断言失败
map操作错误
map未初始化,可读不可写
map的value如果是结构体指针,使用时先判空
除数为0
调用未实现的接口方法
通道操作错误
向已经关闭的管道进行写操作
读关闭的管道不会panic
多次调用close
只有生产者,没有消费者,当管道已满时,所有协程都会被阻塞,从而导致死锁。
goroutine竞争资源
死锁
并发map写
内存不足
Stack Overflow
递归死循环或者超出栈空间
0 条评论
下一页