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

Go语言——error、panic

一、error基本使用

package mainimport ("errors""fmt"
)// 自定义Error
type NetError struct {errorIsLink bool // 是否网络连接错误IsAddr bool // 是否地址错误
}
type MyError struct {code intmsg  string
}func (e MyError) Error() string {return e.msg
}func (e MyError) IsLink() bool {return true
}func (e MyError) IsAddr() bool {return true
}var ErrNotFound = errors.New("not found")func main() {data, err := Find(1)data1, err1 := Find(2)if err != nil && !errors.Is(err, ErrNotFound) {return}if data == 0 {// set}if e, ok := err1.(*MyError); ok && e.IsLink() && e.IsAddr() {// 重试fmt.Println(err1.(*MyError).msg, data1)}fmt.Println("程序结束")
}func do() error {return errors.New("test err")
}func Find(id int) (int, error) {if id == 1 {return 0, ErrNotFound}if id == 2 {return 2, &MyError{code: -20001,msg:  "id不能为2",}}return id, nil
}

二、panic使用

package mainimport ("fmt""runtime""time"
)func main() {go func() {defer func() {if err := recover(); err != nil {fmt.Println("err = ", err)const size = 64 << 10buf := make([]byte, size)buf = buf[:runtime.Stack(buf, false)]fmt.Printf("Stack trace:\n%s\n", buf)}}()var names []stringfmt.Println(names[0])}()time.Sleep(time.Second * 10)
}
http://www.dtcms.com/a/177148.html

相关文章:

  • 【Redis】C++如何使用redis
  • Nginx 性能调优与深度监控
  • Linux上将conda环境VLLM服务注册为开机自启
  • “430”“531”光伏政策变革下,安科瑞如何 “保驾护航”?
  • 热部署相关
  • Office365功能特点
  • 7. HTML 表格基础
  • MATLAB技巧——命令行输入的绘图,中文是正常的,到了脚本(m文件)里面就变成乱码的解决方法
  • default和delete final和override
  • 【fastadmin开发实战】财务数据快速导入系统(复制导入)
  • 力扣92.反转指定范围内的链表、25.k个一组反转链表
  • 学习黑客Linux 系统状态管理
  • 不同OS版本中的同一yum源yum list差异排查思路
  • Android Studio根目录下创建多个可运行的模块
  • PDF文档压缩攻略
  • 【PhysUnits】2 Scalar<T> 标量元组结构体(scalar/mod.rs)
  • ABC 403
  • MySQL的基本操作
  • vue3+ts的watch全解!
  • 案例分享 | 攻克ADAS开发测试难题,实现单元动态测试新突破
  • 【Python】让Selenium 像Beautifulsoup一样,用解析HTML 结构的方式提取元素!
  • 分布式爬虫去重:Python + Redis实现高效URL去重
  • 【网络编程】二、UDP网络套接字编程详解
  • linux 怎么把trex-core-2.65用 crosstool-ng-1.27.0/编译
  • 96、数图求解(整数规划建模求解)
  • Python训练营打卡DAY18
  • 【anylogic_04】地铁站的人流仿真
  • Go 面向对象,封装、继承、多态
  • Win11 24H2首个热补丁下周推送!更新无需重启
  • 单地平面6层PCB设计实战:如何兼顾电源与信号完整性?