Go - error

By convention, errors have type error, a simple built-in interface.

type error interface {
    Error() string
}

Usage

Basically as a part return from function

package main

import (
    "errors"
    "fmt"
)

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

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

Error vs. Panic

  • Error: Recoverable
  • Panic: Not Recoverable, exit and triggers defer , can be caught by recover

An example of panic

package main

import "fmt"

func main() {
    defer fmt.Println("First defer")
    defer fmt.Println("Second defer")

    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered:", r)
        }
    }()

    panic("Something bad happened")
    fmt.Println("This line will not be executed")
}

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

推荐阅读更多精彩内容

  • 背景介绍 如果你有写过Go代码,那么你可以会遇到Go中内建类型error。Go语言使用error值来显示异常状态。...
    陈奇天阅读 2,531评论 0 6
  • 在Go中,对于处理错误一般分为两种情况: 错误和异常. 在Go中,错误的处理一般都是通过 error接口来指定;异...
    张哈阅读 1,765评论 0 2
  • Getting Started Use the Current Stable Version (7.1) Buil...
    Leonzai阅读 1,983评论 0 3
  • golang中defer,panic,recover是很常用的三个特性,三者一起使用可以充当其他语言中try…ca...
    smoke_zl阅读 27,771评论 2 28
  • error Go 使用 error 类型来表示函数执行过程中遇到的错误,如果返回的 error 值为 nil,则表...
    夜空一起砍猩猩阅读 197评论 0 0