Go语言之错误处理

一. 异常处理

1. error接口

Go语言中引入了一个关于错误处理的标准模式error接口,是go语言的内置接口类型

type error interfance{
    Error() string
}

具体使用:

package main

import (
    "errors"
    "fmt"
)

func MyDiv(a, b int) (r int, e error) {

    e = nil
    if b == 0 {
        e = errors.New("分母不能为0")
    } else {

        r = a /b
    }
    return r, e
}

func main() {

    result, err := MyDiv(10, 2)

    if err != nil {

        fmt.Println("err == ", err)

    } else {
        fmt.Println("result == ", result)

    }

2. panic

  • 我们不应该通过调用panic函数来报告普通任务,而应该只是把他作为报告致命错误的一种方式
  • 当panic异常发生时,程序会中断运行

3. recover

package main

import "fmt"

func texta()  {
    fmt.Println("aaaaaaaaaaaaaaaaa")
}

func textb(x int)  {

    defer func() {
        if err := recover() ;  err != nil {
            fmt.Println(err)
        }
    }()

    var a [10]int
    a[x] = 111
}

func textc()  {
    fmt.Println("cccccccccccccccccc")

}



func main() {
    texta()
    textb(20)
    textc()
}

/*
    aaaaaaaaaaaaaaaaa
    runtime error: index out of range
    cccccccccccccccccc
*/

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Go 语言没有像Java那样的 try/catch 异常机制,它不能执行抛异常操作,而是使用了panic 和 re...
    副班长国伟阅读 2,108评论 0 1
  • 错误和异常的区别 错误和异常是不同的概念 错误指的是可能出现问题的地方出现了问题,比如打开一个文件时失败,这种情况...
    一根很帅的藤藤菜阅读 2,406评论 0 3
  • Docker是基于镜像的。镜像类似于已经包含了文件、配置和安装好的程序的虚拟机镜像。同样的,你可以像启动虚拟机一样...
    wangliang938阅读 406评论 0 0
  • 什么是低水平勤奋?举个例子,两个老师花同样的时间和精力辅导同一个学生,在J老师的辅导下学生的成绩并没有明显的提高,...
    心水阅读 238评论 0 3
  • 夕阳染红了天边一朵朵的浪花,附近的农庄炊烟袅袅升起,如同缕缕青丝连接着天和地,夜幕降临了,车灯照在盘旋下山...
    牧童笔录阅读 811评论 2 6