GO语言标准错误处理机制error用法实例
作者:shichen2014 发布时间:2024-02-13 18:07:20
本文实例讲述了GO语言标准错误处理机制error用法。分享给大家供大家参考。具体分析如下:
在 Golang 中,错误处理机制一般是函数返回时使用的,是对外的接口,而异常处理机制 panic-recover 一般用在函数内部。
error 类型介绍
error 类型实际上是抽象了 Error() 方法的 error 接口,Golang 使用该接口进行标准的错误处理。
type error interface {
Error() string
}
一般情况下,如果函数需要返回错误,就将 error 作为多个返回值中的最后一个(但这并非是强制要求)。参考模型:
func Foo(param int) (n int, err error) {
// ...
}
if n, err := Foo(0); err != nil {
// 错误处理
}
这就是 error 的使用方法,与其他语言的异常相比,Golang 的方法相对更加容易、直观。
代码1:经典使用方法
package main
import (
"errors"
"fmt"
)
func requireDual(n int) (int, error) {
if n&1 == 1 {
return -1, errors.New("您输入不是双数") //生成一个简单的 error 类型
}
return n, nil
}
func main() {
if result, err := requireDual(101); err != nil {
fmt.Println("错误:", err)
} else {
fmt.Println("结果:", result)
}
}
输出结果:
错误: 您输入不是双数
你有没有觉得 Golang 的这种错误的处理机制非常的简洁啊,呵呵!
代码2:扩充下上面的代码,带自定义参数的错误输出
package main
import (
"fmt"
)
type dualError struct {
Num int
problem string
}
func (e dualError) Error() string {
return fmt.Sprintf("参数不正确,因为\"%d\"不是双数", e.Num)
}
func requireDual(n int) (int, error) {
if n&1 == 1 {
return -1, dualError{Num: n}
}
return n, nil
}
func main() {
if result, err := requireDual(101); err != nil {
fmt.Println("错误:", err)
} else {
fmt.Println("结果:", result)
}
}
输出结果
错误: 参数不正确,因为"101"不是双数
希望本文所述对大家的GO语言程序设计有所帮助。


猜你喜欢
- 在机器学习过程中,通常会通过pandas读取csv文件,保持成dadaframe格式,然而有时候需要对dataframe中的时间字段进行数据
- 说明: 本文的自动更新功能使用的项目为 electron-vue 脚手架搭建一个默认项目。 参考的文章如下:electron-vue 中文文
- Python支持四种不同的数值类型,包括int(整数)long(长整数)float(浮点实际值)complex (复数),本文章向码农介绍p
- 最近在学习python,之前一直用notepad++作为编辑器,偶然发现了VScode便被它的颜值吸引。用过之后发现它启动快速,插件丰富,下
- 1、Git本地版本库结构如下图所示:工作区(Working Directory)添加、编辑、修改、删除文件等操作。暂存区(Stage)打算提
- 你还没用 jQuery 写过导航菜单? 相信看到这些出色的jQuery导航菜单后,一定会为此而后悔没早点把 jQuery 应用到自己的Web
- EcmaScript正則表達式( 深入淺出系列之淺出 ^_^ )在线正则表达式测试:http://www.aspxhome.com/RegE
- 文件夹的复制文件夹复制使用的函数导入包与模块`from shutil import copytree使用方法:copytree(来源目录,
- 初学Python,写了一小段程序,在pycharm中debug一直报错,在网上搜了很久,尝试多种方法后还是没有用。尝试了很久之后,发现这个问
- 前言近端时间看了一个短视频,觉得视频的背景音乐片段很不错,想把这个背景音乐得到,虽然小编运用Python爬虫肯定能得到这首音乐,但是这个音乐
- 最近项目很忙没机会更新博客。有朋友在和我谈学艺术的就业问题,就随便谈一下自己的想法。每年中国美院报考的人数与日俱增,越来越多的人投入到艺术设
- 一、闭包1. 什么是闭包?在函数中可以(嵌套)定义另一个函数时,如果内部的函数引用了外部的函数的变量,则可能产生 闭包。闭包可以用来在一个函
- 我就废话不多说了,直接上代码吧!import turtleturtle.pensize(5)turtle.pencolor("ye
- 本文主要研究的是tornado 多进程模式的相关内容,具体如下。官方文档的helloworld实例中的启动方法:if __name__ ==
- python是很容易上手的编程语言,但是有些时候使用python编写的程序并不能保证其运行速度(例如:while 和 for),这个时候我们
- 实现一个AuditLog的功能,是B/S结构专案。 每个用户可以登录系统,在程序中操作数据(添加,更新和删除)需要实现记录操作跟踪。是谁添加
- 前言APScheduler是基于Quartz的一个Python定时任务框架。提供了基于日期、固定时间间隔以及crontab类型的任务,并且可
- 微信更新后出来了一块比较火的小游戏,要是一款不涉及到排行的游戏,可能 没人去关注这款游戏。最开自己一直苦练技术,想在微信排行上面装一装,练了
- 本文实例讲述了Mysql数据库中数据表的优化、外键与三范式用法。分享给大家供大家参考,具体如下:数据表优化将商品信息表进行优化1.创建商品种
- 目录一.权限简介二.权限表结构设计:第一版三.权限表结构设计:第二版四.客户管理之动态“一级”菜单五.客户管理之动态“二级”菜单六.客户管理