美文网首页Go语言学习路
Golang的异常处理介绍

Golang的异常处理介绍

作者: TZX_0710 | 来源:发表于2019-12-05 10:31 被阅读0次
package main

import "github.com/astaxie/beego/logs"

func main() {

    //关于Golang的异常处理方式说明
    //1.关键词  panic  2.recover 3.defer函数
    //panic 的作用是抛出一个错误信息  可以看作是Java中的throws new Exception
    //panic 调用完程序会立即停止 后续程序不会再执行
    //demo1.
    var number=10
    if number==10{
        panic("错误信息")
    }
    logs.Info("程序结束")
}
//========打印结果===========
panic: 错误信息

goroutine 1 [running]:
main.main()
    D:/golang_example/example/deferExample.go:13 +0x40

Process finished with exit code 2
//========打印结果===========
我们可以看到控制台只打印了程序结束 但是并未 继续往下之后  

//demo2. 使用 recover捕获异常 注:recover必须定义在panic错误之前处理
Demo()
logs.Info("程序结束")
//定义一个函数供调用 函数里面使用panic抛出异常 使用defer 处理异常
func Demo(){
    defer func() {
        if err:=recover();err!=nil{
            logs.Info("捕获异常")
        }
    }()

    var number=10
    if number==10{
        panic("错误信息")
    }
    fmt.Println("程序结束")
}
可以看到 方法demo中出现了异常 recover 处理了异常,程序最后输出了 程序结束 并不会直接中断
//========打印结果===========
2019/12/05 09:59:42.663 [I]  捕获异常
2019/12/05 09:59:42.682 [I]  程序结束
//========打印结果===========
//demo3.  关于defer  函数我们可以看到 刚才的recover当中使用了该函数
// 1.defer 语句会将其后面跟随的语句进行延迟处理,
defer logs.Info("Test Aline")
logs.Info("程序结束")
//========打印结果===========
2019/12/05 10:26:50.579 [I]  程序结束
2019/12/05 10:26:50.594 [I]  Test Aline
//========打印结果===========

// 2.在 defer 归属的函数即将返回时,将延迟处理的语句按
// defer 的逆序进行执行,也就是说,先被 defer 的语句最后被执行,最后被 defer 的语句,最先被执行。
//多个 defer函数 的执行顺序出去的时候顺序是按照LIFO的方式进出  第一个被放进去的 一定是最后一个出来的
func DeferExample(){
    defer logs.Info(1)
    defer  logs.Info(2)
    defer logs.Info(3)
}

2019/12/05 10:28:48.767 [I]  3
2019/12/05 10:28:48.781 [I]  2
2019/12/05 10:28:48.781 [I]  1

相关文章

  • Golang的异常处理介绍

  • goLang异常处理

    defer defer是go提供的一种资源处理的方式。defer的用法遵循3个原则在defer表达式被运算的同时,...

  • golang异常处理

    go语言没有使用像java python等语言的try catch/except 语句来处理异常,而是使用它特有的...

  • Golang异常处理

    Go中可以抛出一个panic的异常,然后在defer中通过recover捕获这个异常,然后正常处理。异常和错误是不...

  • golang的异常处理

    go语言是不支持异常的,go语言的设计者认为异常会被不成熟的程序员滥用,导致异常的处理过去复杂;go语言取消异常的...

  • Golang的异常处理

    Golang的异常处理 Golang的优点有很多,以前的文章中也有提到过,但也有很多槽点为Gopher所诟病,尤其...

  • golang笔记——异常处理

    函数返回值处理异常 golang为了避免像写Java一样滥用try catch,可以使用函数多返回值的特性来进行异...

  • 【Golang】并发的异常处理

    go语言的并发实现起来很简单,只需要一个go关键字即可使函数并发,但是捕捉并发方法中的错误就没有那么方便了。本文总...

  • SpringMvc异常

    异常处理类的介绍 类层次结构 异常处理类详解 1.AnnotationMethodHandlerException...

  • golang 基础(33)异常处理

    对出初学者往往忽视程序中异常处理,认为程序总是是在一个被百般呵护的环境运行,没有任何风吹雨打,这是因为我们是最了解...

网友评论

    本文标题:Golang的异常处理介绍

    本文链接:https://www.haomeiwen.com/subject/pntdgctx.html