首页 > 其他分享 >【go语言】2.3.1 错误处理的基本概念

【go语言】2.3.1 错误处理的基本概念

时间:2023-07-28 22:13:44浏览次数:47  
标签:返回 err error 2.3 Error go Go 错误处理

在 Go 语言中,错误处理是通过返回错误值进行的,而不是像一些其他语言那样通过抛出和捕获异常。Go 语言有一个内置的接口类型 error,专门用于处理错误。

error 接口

error 是一个内置的接口,定义如下:

type error interface {
    Error() string
}

任何实现了 Error() string 方法的类型都可以被视为一个 error 类型。这个 Error 方法返回描述错误的字符串。

创建错误

Go 语言的 errors 包提供了一个简单的创建 error 类型值的函数 New

err := errors.New("something went wrong")

这个 err 就是一个 error 类型的值,它的 Error 方法会返回 "something went wrong"

返回错误

在 Go 中,函数通常会返回一个 error 类型的值作为它的最后一个返回值。如果函数执行成功,这个 error 类型的值将会是 nil,否则它会包含一个描述错误的信息。例如:

func Div(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("division by zero")
    }
    return a / b, nil
}

处理错误

如果一个函数返回一个 error 类型的值,你应该检查这个错误是否为 nil,然后据此决定怎么处理。例如:

result, err := Div(10, 0)
if err != nil {
    fmt.Println("Error:", err)
    return
}
fmt.Println("Result:", result)

在这个例子中,如果 Div 函数返回了一个错误,程序会打印这个错误然后返回,否则它会打印结果。

错误处理是编写健壮和稳定的程序的重要组成部分,理解并适当地处理错误是每个 Go 开发者的必备技能。
推荐阅读:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

file

标签:返回,err,error,2.3,Error,go,Go,错误处理
From: https://www.cnblogs.com/yaoqian/p/17588997.html

相关文章

  • Django 之前端动态数据展示
    一、结合前端页面实现ORM对数据的增删改查1、修改和删除功能的逻辑'''修改功能的逻辑'''1、确定修改哪条记录,怎么确定?通过主键id确定唯一一条记录2、点击修改的按钮,应该跳转到一个修改的页面3、应该通过id查询到原来的数据,并且把这个记录的数据展示到修改的页面4、开始......
  • Go 语言 select 都能做什么?
    原文链接:Go语言select都能做什么?在Go语言中,select是一个关键字,用于监听和channel有关的IO操作。通过select语句,我们可以同时监听多个channel,并在其中任意一个channel就绪时进行相应的处理。本文将总结一下select语句的常见用法,以及在使用过程中的注意事项。......
  • 使用RunnerGo来简化测试流程
    在软件开发过程中,测试是一个重要的环节,需要投入大量时间和精力来确保应用程序或网站的质量和稳定性。但是,随着应用程序变得更加复杂和庞大,传统的测试工具在面对比较繁琐的项目时非常费时费力。这时,一些自动化测试工具就显得尤为重要了。其中,RunnerGo(开源)作为一款性能测试平台,可以帮......
  • Google网站管理员:提升移动Web性…
    移动互联网已经在全球得到了广泛的应用。到2009年,有50%的新增的互联网访问都是来自手机设备的(eMarket,2008和2009)。来自Google的内部资料显示,随着移动浏览器的提升,用户的浏览习惯也在逐步改进。移动浏览器上的页面布局与桌面浏览器有着显著的差异,所以,想要在移动设备上开......
  • golang打印指针切片/数组的值
     FmtSlice2String方法可以将指针切片的值打印处理packagemainimport( "fmt" "reflect")typeStudentstruct{ Namestring`json:"name"cn:"名字"` Ageuint64`json:"age"cn:"年龄"`}funcmain(){ s:=mak......
  • 使用RunnerGo来简化测试流程
    在软件开发过程中,测试是一个重要的环节,需要投入大量时间和精力来确保应用程序或网站的质量和稳定性。但是,随着应用程序变得更加复杂和庞大,传统的测试工具在面对比较繁琐的项目时非常费时费力。这时,一些自动化测试工具就显得尤为重要了。其中,RunnerGo(开源)作为一款性能测试平台,可以......
  • 使用Go调用Powershell加域
    packagemainimport( "fmt" "github.com/go-ldap/ldap/v3" "github.com/mozillazg/go-pinyin" "os" "os/exec" "strings" "time")funcChineseToAbbreviation(chinesestring)string{......
  • Django-4.2博客开发教程:维护后台数据admin模块(六)
    在每个app目录下有个admin.py,使用这个文件可以对其app进行控制。步骤如下:1)先在settings里对其进行注册这里在myblog\myblog\settings.py  > INSTALLED_APPS里把APP名添加进去INSTALLED_APPS=[#'blog.apps.BlogConfig',#注册APP应用'blog','django.co......
  • Golang gRPC学习(05): retry重试
    什么是重试如果服务出现了错误,主要是网络,服务器出现了短暂异常的时候,该怎么办?我们都会人工或者自动的重新连接服务试试,看服务是否恢复可用了。这种重新进行连接服务的一种方式就是重试。如果是在微服务里,应该属于微服务治理的范畴。重试是处理网络服务出现暂时不可用的一种方......
  • ORM对数据的增删改查,动静态网页,Django创建表关系,Django框架的请求生命周期流程图
    通过结合前端页面实现ORM对数据的增删改查#我让你写一个页面,就是把数据库中的数据以表格的形式展示出来,然后在每一行的后面加两个按钮,分别是修改、删除的按钮#表格的展示页面'''思考修改功能的逻辑:'''1、确定修改哪条记录,怎么确定?通过主键id确定唯一一条记录2、点击......