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

Go 语言错误处理

        不管使用哪种语言,程序代码都可能包含各种错误,例如语法错误、逻辑错误、除 0 错误和文件缺失等。因此,每种编程语言都有处理错误的内置机制。

1. Go 程序中的错误

        需要指出的是,错误有多种类型。语法错误通常是开发人员在编写代码时犯的拼写错误。这些可能只是拼写错误的单词或缺少字符的语句。语法错误通常会使用程序无法编译和运行,因此程序员必须在程序运行之前修复它们。像大多数语言一样,Go 编译器会在程序编译或运行时指出语法错误。常见的语法错误包括如下:

  • 使用错误的大小写,例如使用 println 而不是 Println。
  • 在使用变量之前没有声明变量。
  • 试图将一种类型的值赋给另一种类型的变量。

        此外还有逻辑错误。如果有逻辑错误,代码通常会编译并运行,但输出可能与预期不同。和语法错误一样,逻辑错误通常由开发人员引起的。逻辑错误通常表现为以下情形。

  • 当你想检查是否为真时,检查的却是 “是否为假”;
  • 赋值或变量错误;
  • 使用不正确的业务规则

其他一些逻辑错误和类似的错误也会导致程序停止工作。这些错误可能包括如下:

  • 被 0 除;
  • 试图向一个不存在的文件写入内容;
  • 试图将一个太大的值放入数值变量中;
  • 使用接收到的错误数据。

        这些是需要在 Go 程序中捕获和处理的错误。例如,假设用户被提示以整数形式输入他们的年龄,但实际输入了他们的名字,如果没有包含处理错误的逻辑,则 Go 程序可能会崩溃。 

2. Go 中的 error 类型

        在 Go 中,有一种专用的错误类型称为 error 类型。由于 error 是一种类型,因此我们可以将错误存储在变量中,从函数返回错误,并对任何其他与类型相关的错误执行操作。

        下面的代码包含了一个语法错误,这个错误被成功捕获。

package mainimport ("fmt""strconv"
)func main() {var str string = "10x"nbr, error := strconv.ParseInt(str, 10, 8)fmt.Println(nbr)fmt.Println(error)
}

当运行上述代码时,会得到以下消息:

0
strconv.ParseInt: parsing "10x": invalid syntax

3. 自定义错误处理

4. 错误方法

5. Errorf 函数

6. 空标识符

7. 用结构体表示错误消息

8. 多个自定义错误消息

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • keepalive原理详解及应用
  • Windows采用VS2019实现Open3D的C++应用
  • ~Keepalived高可用集群~
  • CAPL使用结构体的方式组装一条DoIP车辆识别请求报文(payload type 0x0002)
  • [Datawhale AI夏令营 2024 第四期] 从零入门大模型微调之旅的总结
  • wordpress网站“ERR_CONNECTION_REFUSED”错误
  • string模拟
  • leetcode 21-30(2024.08.16)
  • P2460[SDOI2007] 科比的比赛
  • PyTorch--深度学习
  • 开源通用验证码识别OCR —— DdddOcr 源码赏析(一)
  • [C#]winform基于opencvsharp结合Diffusion-Low-Light算法实现低光图像增强黑暗图片变亮变清晰
  • 基于改进YOLOv8的景区行人检测算法
  • C语言——函数专题
  • LSTM 模型原理
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • Elasticsearch 参考指南(升级前重新索引)
  • es6要点
  • iOS小技巧之UIImagePickerController实现头像选择
  • Laravel Mix运行时关于es2015报错解决方案
  • Redis中的lru算法实现
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 新版博客前端前瞻
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (论文阅读40-45)图像描述1
  • (三)uboot源码分析
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (十六)视图变换 正交投影 透视投影
  • (一)Dubbo快速入门、介绍、使用
  • (一一四)第九章编程练习
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • (转载)Linux网络编程入门
  • .NET CF命令行调试器MDbg入门(一)
  • .net MySql
  • .net 验证控件和javaScript的冲突问题
  • .Net环境下的缓存技术介绍
  • .net开发引用程序集提示没有强名称的解决办法
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • @GetMapping和@RequestMapping的区别
  • @javax.ws.rs Webservice注解
  • @RequestParam,@RequestBody和@PathVariable 区别
  • @Transactional 详解
  • [ Linux ] Linux信号概述 信号的产生
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • [Android学习笔记]ScrollView的使用
  • [C++从入门到精通] 14.虚函数、纯虚函数和虚析构(virtual)
  • [CLickhouse] 学习小计
  • [FTP]pureftp部署和优化
  • [GHCTF 2024 新生赛]ezzz_unserialize
  • [InnoDB系列] -- SHOW INNODB STATUS 探秘
  • [JDK工具-6] jmap java内存映射工具