当前位置: 首页 > 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. 多个自定义错误消息

相关文章:

Go 语言错误处理

不管使用哪种语言,程序代码都可能包含各种错误,例如语法错误、逻辑错误、除 0 错误和文件缺失等。因此,每种编程语言都有处理错误的内置机制。 1. Go 程序中的错误 需要指出的是,错误有多种类型。语法错误通常是开发人员在编写代…...

LVS部分配置1

LVS nat服务器(作时间服务器) [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 [rootlocalhost ~]# yum -y install ntpdate [rootlocalhost ~]# ntpdate cn.ntp.org.cn [rootlocalhost ~]# which ntpdate [rootlocalhost…...

datax和datax-web打包成docker运行

概述 datax和datax-web从一台机器迁移到另一台时,要重新搭建一套运行环境,比较麻烦;打包成docker镜像后迁移就方便多了; 因为我的mysql版本是8,需要在datax的read和write中手动添加8的jdbc驱动 所以我先各自下载好了datax和data…...

命令行参数环境变量

目录 前言: 命令行参数: 现象: 这些参数的意义: 为什么要这么做? 这些事是谁做的呢? 环境变量 现象: 创建环境变量: 结合程序理解: 前言: 我们在前…...

『大模型笔记』WizardLM:使大型预训练语言模型能够遵循复杂的指令

WizardLM: Empowering Large Pre-Trained Language Models to Follow Complex Instructions 文章目录 一. WizardLM:使大型预训练语言模型能够遵循复杂的指令二. Evolve-Instruct(优化版)2.1. 概述2.2. 实施二. 参考文献WizardLM:使大型预训练语言模型能够遵循复杂的指令:…...

编程-设计模式 2:抽象工厂模式

设计模式 2:抽象工厂模式 定义与目的 定义:抽象工厂模式提供一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们具体的类。目的:该模式的主要目的是解耦客户端代码与产品类之间的关系,并确保一…...

阿里云智能大数据演进

本文根据7月24日飞天发布时刻产品发布会、7月5日DataFunCon2024北京站:大数据大模型.双核时代实录整理而成,演讲信息如下: 演讲人:徐晟 阿里云研究员/计算平台产品负责人 主要内容: Overview - 阿里云大数据 AI 产品…...

Java面试题———Spring篇①

目录 一,谈谈你对SpringIOC的理解 二,Spring中有哪些依赖注入方式 三,你用过哪些Spring注解 四,SpringBean的作用域有几种 五,Spring中的bean线程安全吗 六,谈谈你对SpringAOP的理解 七,…...

4章10节:用R做数据重塑,变体函数应用详解和可视化的数据预处理介绍

数据重塑(Data Reshaping)是将数据从一种结构转换为另一种结构的过程,是清理、分析和可视化数据的重要步骤。R语言作为数据科学的强大工具,提供了许多包来帮助我们进行数据重塑,其中最常用的就是dplyr包。dplyr包以其简洁的语法和高效的操作速度著称,它不仅可以帮助我们进…...

Socks5代理IP在跨境电商和网络爬虫领域的实战应用

在现代互联网环境中,Socks5代理IP因其强大的灵活性和隐私保护功能,成为了跨境电商和网络爬虫领域的重要工具。本文将探讨Socks5代理IP的基本原理,并详细介绍其在跨境电商和网络爬虫中的实际应用。 1. Socks5代理IP简介 Socks5代理IP是一种网…...

农业上的目标跟踪论文汇总

文章目录 2022Multi-object tracking using Deep SORT and modified CenterNet in cotton seedling counting (Computers and Electronics in Agriculture)A novel apple fruit detection and counting methodology based on deep learning and trunk tracking in modern orcha…...

gpxt 小程序:轨迹合并与管理的高效工具

引言 在户外探险和运动追踪领域,GPXT小程序以其独特的轨迹管理和合并功能脱颖而出,成为徒步、骑行等运动爱好者不可或缺的工具。本文将详细介绍GPXT小程序的核心功能及其对户外活动爱好者的实用性。 核心功能概览 轨迹合并 GPXT小程序允许用户将多个…...

elasticsearch集成springboot详细使用

1.es下载&配置 配置JVM 配置跨域 配置https和密码 2.es启动 .\elasticsearch.bat 或 后台启动: nohup ./bin/elasticsearch& 浏览器访问:https://localhost:9200 输入账户:elastic / 123456 3.重置es密码 .\elasticsearch-r…...

html+css网页制作 化妆品电商4个页面

htmlcss网页制作 化妆品电商4个页面 网页作品代码简单,可使用任意HTML编辑软件(如:Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作)。 获取源码 1&#xff…...

微调LLama 3.1——七月论文审稿GPT第5.5版:拿早期paper-review数据集微调LLama 3.1

前言 对于llama3,我们之前已经做了针对llama3 早7数据微调后的测评 去pk llama2的早7数据微调后,推理测试集中的早期paper:出来7方面review去pk gpt4推理测试集中的早期paper:7方面reviewground truth是早期paper的7方面人工rev…...

rust 编译时报错:type annotations needed for Box

如下图所示: 解决方法: 升级time的版本: cargo update -p time...

应用方案 | 低功耗接地故障控制器D4145

一、概述 D4145 是一个接地故障断路器。它能够检测到不良的接地条件,譬如装置接触到水时,它会在有害或致命的电击发生之前将电路断开。 D4145能检测并保护从火线到地线,从零线到地线的故障.这种简单而传统的电路设计能够确保其应用自如和长时间的可靠性。…...

第一次彩色pcb打样记录

感受和总结 看到彩色电路板和绿油板放在一起,感触还是挺大的。而且彩色板还直接给沉金,感觉焊上器件不要外壳都很好看了。后面一定记录一下这个板子实现的功能。 板子功能暂时分配 五个触摸盘,为了通过触摸控制不同功能,例如&a…...

通过 MediatR 实现了请求的分发和处理器的解耦

1. 前端请求发起 假设前端通过 HTTP GET 请求访问 GetTemplateSettings 端点,URL 中包含了 SubjectUuid 和 SubjectType 作为查询参数。 2. 进入 Controller 方法 请求到达后,会进入 MinBcController 类中的 GetTemplateSettings 方法,该方…...

Naive UI+vue一些组件的注意事项

NSpace(间距 Space) 默认给出space内的组件加一个div间隔,只能批量修改space内的元素样式,不能单独修改自组件样式,一般用于横向布局,若垂直布局若需要flex布局,慎用space组件NDataTable(数据表格 Data Table) :flex-h…...

手机号定位终极指南:3分钟搭建免费归属地查询系统

手机号定位终极指南:3分钟搭建免费归属地查询系统 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitcode.com/gh_mirrors/…...

用Arduino和MAX30102做个心率血氧仪,从硬件连线到算法调试全流程避坑

从零构建Arduino心率血氧仪:MAX30102实战指南 开篇:为什么选择MAX30102? 在可穿戴健康设备爆发的时代,心率血氧监测已成为智能手环的标配功能。而MAX30102这颗高度集成的光学传感器,正以医用级精度和低功耗特性成为创客…...

从STM32到华大HC32F460:USB HOST MSC + FatFs R0.13c移植避坑全记录

从STM32到华大HC32F460:USB HOST MSC FatFs R0.13c移植实战指南 作为一名长期使用STM32的嵌入式开发者,第一次接触华大半导体的HC32F460系列MCU时,既兴奋又忐忑。兴奋的是国产MCU的性能已经能够媲美国际大厂,忐忑的是生态差异带来…...

别再折腾源码编译了!Ubuntu 22.04 LTS下用apt-get一键部署Asterisk PBX(附SIP账号配置详解)

别再折腾源码编译了!Ubuntu 22.04 LTS下用apt-get一键部署Asterisk PBX(附SIP账号配置详解) 在开源通信领域,Asterisk作为功能最强大的PBX系统之一,长期困扰初学者的不是其丰富的功能,而是复杂的编译安装过…...

基于MCP协议构建PrismHR连接器:打通HR数据孤岛,赋能AI原生应用

1. 项目概述:一个连接器,打通HR数据孤岛最近在做一个企业内部的HR系统集成项目,遇到了一个典型的老大难问题:核心的HRIS(人力资源信息系统)是PrismHR,但公司内部还有一大堆其他系统,…...

深入解析:NRF24L01如何“伪装”成蓝牙设备?STM32实战代码拆解

深入解析:NRF24L01如何“伪装”成蓝牙设备?STM32实战代码拆解 在物联网设备爆炸式增长的今天,2.4GHz频段已成为无线通信的主战场。NRF24L01作为一款经典的射频芯片,以其低廉的价格和稳定的性能赢得了大量开发者的青睐。而蓝牙技术…...

Blender 3MF插件:终极3D打印工作流解决方案

Blender 3MF插件:终极3D打印工作流解决方案 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 在3D打印的世界里,你是否曾为文件格式转换而头疼&…...

ARM TRCCNTCTLR寄存器详解与调试技巧

1. ARM Trace Counter控制寄存器TRCCNTCTLR深度解析在嵌入式系统调试和性能分析领域,硬件计数器是不可或缺的关键工具。作为ARM架构调试系统的重要组成部分,Trace Counter Control Register(TRCCNTCTLR)系列寄存器为开发者提供了精…...

CANN/Ascend C逻辑异或API文档

LogicalXor 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com…...

在「唯」与「阿」之间安放计算之道,老子这句话给 SAP HANA 开发的一层提醒

「唯之与阿,相去几何?美之与恶,相去若何?人之所畏,不可不畏。荒兮,其未央哉!」放在 SAP HANA 开发里看,不是把古文硬贴到技术上,而是在提醒我们,很多工程判断看起来差别很小,落到系统运行里却会拉开很大的距离。一个 JOIN 写在 application server,还是下推到 data…...