GO语言标准错误处理机制error用法实例

 更新时间:2014年12月03日 16:26:14   投稿:shichen2014  
这篇文章主要介绍了GO语言标准错误处理机制error用法,实例分析了错误处理机制的具体用法,具有一定的参考借鉴价值,需要的朋友可以参考下

本文实例讲述了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语言程序设计有所帮助。

相关文章

  • 一篇文章说清楚 go get 使用私有库的方法

    一篇文章说清楚 go get 使用私有库的方法

    这篇文章主要介绍了go get 如何使用私有库,本文会明确指出Git 、golang的配置项,附送TortoiseGit + Git混合配置,需要的朋友可以参考下
    2022-09-09
  • Go语言中乐观锁与悲观锁的具体使用

    Go语言中乐观锁与悲观锁的具体使用

    乐观锁和悲观锁是两种思想,用于解决并发场景下的数据竞争问题,本文主要介绍了Go语言中乐观锁与悲观锁的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • golang根据生日计算星座和属相实例

    golang根据生日计算星座和属相实例

    这篇文章主要为大家介绍了golang根据生日计算星座和属相的示例代码,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • Go mod包管理工具详解

    Go mod包管理工具详解

    Go mod作为Go语言的官方包管理工具,可以帮助开发者更好地管理包和依赖,提高开发效率和项目可维护性,本文将介绍Go语言的包和依赖管理,以及Go mod的作用和优势,需要的朋友可以参考下
    2023-05-05
  • Go常用标准库之fmt的简介与使用详解

    Go常用标准库之fmt的简介与使用详解

    fmt 是 Go 语言中的一个常用标准库,它用于格式化输入和输出数据,这篇文章主要为大家介绍了fmt的基本使用,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-10-10
  • 一文带你理解Go语言中方法的本质

    一文带你理解Go语言中方法的本质

    我们知道,Go语言从设计伊始,就不支持经典的面向对象语法元素,但 Go 语言仍保留了名为“方法(method)”的语法元素,下面我们就来带大家深入了解一下Go语言中的方法吧
    2023-11-11
  • Go基础教程系列之import导入包(远程包)和变量初始化详解

    Go基础教程系列之import导入包(远程包)和变量初始化详解

    这篇文章主要介绍了Go基础教程系列之import导包和初始化详解,需要的朋友可以参考下
    2022-04-04
  • Go+Redis缓存设计与优化实现

    Go+Redis缓存设计与优化实现

    本文主要介绍了Go+Redis缓存设计与优化实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02
  • Gin+Gorm实现CRUD的实战

    Gin+Gorm实现CRUD的实战

    本文主要介绍了Gin+Gorm实现CRUD的实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • 一文精通管理多版本Go安装教程

    一文精通管理多版本Go安装教程

    这篇文章主要为大家介绍了一文精通管理多版本Go安装教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01

最新评论