• Go语言之异常处理


    一、基本介绍

    在Go中不支持传统的try...catch...finally这种处理,在Go中引入了defer、panic、recover处理方式,通过抛出一个panic异常,然后在defer中通过recover捕获这个异常,最后正常处理。

    package main
    import (
        "fmt"
    )
    
    func test() {
    
        defer func() {
            err := recover() // recover() 内置函数,可以捕获到异常
            if err != nil {
                fmt.Println("err=", err)
            }
        }()
    
        n1 := 5
        n2 := 0
        res := n1 / n2
        fmt.Println("res=", res)
    
    }
    
    func main() {
        test()
    }
    /*
    err= runtime error: integer divide by zero
    */

     进行错误处理的好处的可以及时预警,通过邮件或者其它的方式来避免一些严重后果的产生。

    二、自定义异常处理

    Go程序中,也支持自定义异常处理,使用errors.New和panic内置函数。其中:

    • errors.New("错误说明"),返回一个error类型的值,表示一个错误
    • panic内置函数,接受一个interface类型的值(任何值)作为参数。可以接收error类型的变量,输出错误信息,并退出程序
    package main
    import (
        _"fmt"
        "errors"
    )
    
    func cal(number int) (err error) {
        if number != 5 {
            return errors.New("输入错误...")
        } else {
            return nil
        }
    }
    
    func test() {
        err := cal(10)
        if err != nil {
            panic(err)
        }
    
    }
    
    func main() {
        test()
    }
    /*
    err= runtime error: integer divide by zero
    */
    作者:iveBoy
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Docker
    Dotted lines by default in ViVA
    8245H(C2)光猫配置方法
    两种将verilog网表转为spice网表的方法
    calibredrv create reference cell
    怎么flatten一个GDS所有层次
    路由器后面访问光猫
    贝尔IPTV
    PDK导出的cdl MOS四端顺序不正确
    如何删除已经存在lib的techfile
  • 原文地址:https://www.cnblogs.com/shenjianping/p/15586272.html
Copyright © 2020-2023  润新知