当前位置: 首页 > web >正文

golang 非error错误分类

1.应用级别,可recover

这些 panic 一般是 逻辑或使用不当导致的运行时错误,Go 程序可以用 recover 捕获并继续运行:

类型示例描述
类型不一致atomic.Value 存不同类型 v.Store(100); v.Store("abc")panic: store of inconsistently typed value
数组/切片越界arr := []int{1,2}; fmt.Println(arr[3])panic: runtime error: index out of range
空指针引用var p *int; fmt.Println(*p)panic: runtime error: invalid memory address or nil pointer dereference
类型断言失败var i interface{} = 123; s := i.(string)panic: interface conversion: int is not string
映射访问不存在键不会 panic 直接返回零值;但对 nil map 写入会 panic
nil map 写入var m map[int]int; m[1]=1panic: assignment to entry in nil map
channel 关闭写入ch := make(chan int); close(ch); ch<-1panic: send on closed channel
channel 关闭重复ch := make(chan int); close(ch); close(ch)panic: close of closed channel
阻塞,不 panic(可选)
runtime 错误runtime.Gosched() 不会 panic,但 runtime.Goexit() 会终止当前 goroutine
死锁进程内所有协程都在阻塞fatal error: all goroutines are asleep - deadlock!

2. 系统级别错误,不可recover

类型示例描述
map 并发读写m := make(map[int]int); go m[1]=1; go _ = m[2]panic: concurrent map read and map write
栈溢出无限递归函数panic: runtime: stack overflow
内存损坏Cgo 直接写越界内存runtime panic,无法 recover
runtime 系统错误runtime.Breakpoint()调试或系统级 panic,不可 recover
内存访问非法unsafe 包错误操作如访问非法地址、强制类型转换出界
signal / SIGSEGV非法访问地址panic: runtime error: invalid memory address or nil pointer dereference,在系统级别也可能终止进程

3. 特殊场景

类型示例描述
nil 函数调用var f func(); f()panic: call of nil function
append 到 nil slicevar s []int; s = append(s, 1)不 panic,可以正常工作
close nil channelvar ch chan int; close(ch)panic: close of nil channel
atomic.Value 读写不一致类型v.Store(100); v.Store("abc")panic,可 recover
http://www.xdnf.cn/news/18565.html

相关文章:

  • 什么是短视频矩阵系统企业立项功能源码开发,支持OEM
  • 华为云物联网产品架构解析:资源空间、群组、产品、标签、网关、设备与子设备的关系梳理与设置指南
  • 【GPT入门】第54课 量化位数与存储大小的影响
  • 开发避坑指南(31):Oracle 11g LISTAGG函数使用陷阱,缺失WITHIN子句解决方案
  • Node.js中Express框架入门教程
  • PHY芯片的作用
  • C#_异步编程范式
  • DOLO 上涨:Berachain 生态爆发的前奏?
  • 血管介入医疗AI发展最新方向与编程变革:从外周、神经到冠脉的全面解析
  • 【笔记】动手学Ollama 第七章 应用案例 Agent应用
  • C++的指针和引用:
  • Apache HTTP Server:深入探索Web世界的磐石基石!!!
  • 第5.3节:awk数据类型
  • 部署Qwen2.5-VL-7B-Instruct-GPTQ-Int3
  • linux中的iptables的简介与常用基础用法
  • ES_分词
  • OpenCV图像形态学操作
  • 智能求职推荐系统
  • ES6 面试题及详细答案 80题 (01-05)-- 基础语法与变量声明
  • 在 Linux 中全局搜索 Word 文档内容的完整指南
  • DeepSeek R2难产:近期 DeepSeek-V3.1 发布,迈向 Agent 时代的第一步
  • (LeetCode 面试经典 150 题) 129. 求根节点到叶节点数字之和 (深度优先搜索dfs)
  • windows中bat脚本中一些操作(一)
  • 面试紧张情绪管理:如何保持冷静自信应对挑战
  • ES_预处理
  • 自定义SamOut模型在随机序列生成任务上超越Transformer
  • DINOv3 重磅发布
  • CLruCache::BucketFromIdentifier函数分析
  • k8s集群限制不同用户操作
  • 基于springboot的中医养生管理系统