zoukankan      html  css  js  c++  java
  • 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
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    ARM处理器
    进程和线程通俗理解
    const与指针
    字符提取命令
    ThinkPHP之视图模版的使用
    ThinkPHP之MVC与URL访问
    ThinkPHP之项目搭建
    android之文件存储和读取
    cryptdb中wrapper.lua的分析
    cryptDB安装分析
  • 原文地址:https://www.cnblogs.com/shenjianping/p/15586272.html
Copyright © 2011-2022 走看看