前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >26.Go异常处理-error接口

26.Go异常处理-error接口

作者头像
Devops海洋的渔夫
发布2022-01-17 10:30:39
2300
发布2022-01-17 10:30:39
举报
文章被收录于专栏:Devops专栏Devops专栏

26.Go异常处理-error接口

异常介绍

所谓的异常:当GO检测到一个错误时,程序就无法继续执行了,反而出现了一些错误的提示,这就是所谓的**"异常"**。

所以为了保证程序的健壮性,要对异常的信息进行处理。

例如,如下程序,定义一个函数实现整除操作,这个程序对大家来说已经很简单了,实现如下:

代码语言:javascript
复制
package main

func Test(a, b int) int {
   return a / b
}

func main() {
   Test(10,0)
}

但是,大家仔细考虑一下,该方法是否有问题?

如果b的值为0,会出现什么情况?

程序会出现以下的异常信息:

image-20210605105405080

并且整个程序停止运行。

那么出现这种情况,应该怎样进行处理呢?这时就要用到异常处理方法的内容。

1 error接口

error接口的定义

Go语言引入了一个关于错误处理的标准模式,即error接口,它是Go语言内建的接口类型,该接口的定义如下:

代码语言:javascript
复制
type error interface {
 Error() string
}

errors库提供的方法

代码语言:javascript
复制
import "errors"

Go语言的标准库代码包errors为用户提供如下方法:

image-20210605105719344

通过以上代码,可以发现error接口的使用是非常简单的(error是一个接口,该接口只声明了一个方法Error(),返回值是string类型,用以描述错误)。

errors 接口的基本使用

下面看一下基本使用,

  • 首先导包:
代码语言:javascript
复制
import "errors"
  • 然后调用其对应的方法:
代码语言:javascript
复制
err := errors.New("this is normal err")
fmt.Println("err =", err)
  • 当然fmt包中也封装了一个专门输出错误信息的方法,如下所示:
代码语言:javascript
复制
err1 := fmt.Errorf("%s", "this is normal err1")
fmt.Println("err1 = ", err1)
  • 了解完基本的语法以后,接下来使用error接口解决Test( )函数被0整除的问题,如下所示:
代码语言:javascript
复制
package main

import (
   "errors"
   "fmt"
)

// 设置返回错误信息
func Test(a, b int) (result int, err error) {
   err = nil
   if b == 0 {
      err = errors.New("不能为0") // 定义error
   } else {
      result = a / b
   }
   return
}

func main() {
   result, err := Test(10, 0)
   if err != nil {
      fmt.Println("err =", err)
   } else {
      fmt.Println("result =", result)
   }
}

执行如下:

代码语言:javascript
复制
err = 不能为0

在Test( )函数中,判断变量b的取值,如果有误,返回错误信息。

并且在main( )中接收返回的错误信息,并打印出来。

常见的 error 使用方式

这种用法是非常常见的,例如,后面讲解到文件操作时,涉及到文件的打开,如下:

代码语言:javascript
复制
func Open(name string) (*File, error) 

在打开文件时,如果文件不存在,或者文件在磁盘上存储的路径写错了,都会出现异常,这时可以使用error记录相应的错误信息。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 海洋的渔夫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 26.Go异常处理-error接口
  • 异常介绍
  • 1 error接口
    • error接口的定义
      • errors库提供的方法
        • errors 接口的基本使用
          • 常见的 error 使用方式
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档