阿里架构师Go lang入门精炼详解教程:Go lang错误处理机制EP11

本文介绍了Go语言的错误处理机制,包括返回错误的方式、错误类型、如何定制错误以及异常(panic/recover)的使用。错误处理是Go语言中非常重要的一环,通过返回错误而不是异常捕获来管理错误,使得代码更贴合业务逻辑。文章通过实例展示了如何创建和处理自定义错误,以及在遇到系统异常时如何使用recover恢复执行。
摘要由CSDN通过智能技术生成

在编程语言层面,错误处理方式大体上有两大流派,分别是以Python为代表的异常捕获机制(try....catch);以及以Go lang为代表的错误返回机制(return error),前者是自动化流程,模式化的语法隔离正常逻辑和错误逻辑,而后者,需要将错误处理判断编排在正常逻辑中。虽然模式化语法更容易让人理解,但从系统资源开销角度看,错误返回机制明显更具优势。 返回错误 Go lang的错误(error)也是一种数据类型,错误用内置的error 类型表示,就像其他的数据类型的,比如字符串、整形之类,错误的具体值可以存储在变量中,从函数中返回:

package main import "fmt" func handle() (int, error) { return 1, nil } func main() { i, err := handle() if err != nil { fmt.Println("报错了") return } fmt.Println("逻辑正常") fmt.Println(i) }

程序返回:

逻辑正常 1

这里的逻辑是,如果handle函数成功执行并且返回,那么入口函数就会正常打印返回值i,假设handel函数执行过程中出现错误,将返回一个非nil错误。 如果一个函数返回一个错误,那么理论上,它肯定是函数返回的最后一个值,因为在执行阶段中可能会返回正常的值,而错误位置是未知的,所以,handle函数返回的值是最后一个值。 go lang中处理错误的常见方式是将返回的错误与nil进行比较。nil值表示没有发生错误,而非nil值表示出现错误。在我们的例子中,我们检查错误是否为nil。如果它不是nil,我们会通过fmt.Println方法提醒用户并且从主函数返回,结束逻辑。 再来个例子:

package main import ( "fmt" "net/http" ) func main() { resp, err := http.Get("123123") if err != nil { fmt.Println(err) return } fmt.Println(resp.StatusCode) }

这回我们使用标准库包http向一个叫做123123的网址发起请求,当然了,请求过程中有可能发生一些未知错误,所以我们使用err变量获取Get方法的最后一个返回值,日过err不是nil,那么就说明请求过程中报错了,这里打印具体错误,然后从主函数中返回。 程序返回:

Get "123123": unsupported protocol scheme ""

很明显,肯定报错了࿰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值