首页 > 其他 > 详细

[GO]revoer的应用

时间:2018-09-17 11:09:33      阅读:227      评论:0      收藏:0      [点我收藏+]

error的函数只是用来报一些低等级的错误,panic是报那些会导致程序崩溃的错误,但是会有一个问题就是panic也会导致程序中断 ,如果我们需要程序在报错之后继续运行并报出错误的信息

就需要使用到recover

package main

import "fmt"

func testa()  {
    fmt.Println("aaaaaaaaaa")
}

func testb(x int)  {
    defer func() {  //注意这里,一定要写在上面,使用defer函数,如果有异常,则在退出程序之后执行revoer,打印了错误之后继续执行下面的程序
        if err:=recover();err != nil{//在使用了超出数组范围的索引之后,这里就会有一个panic异常
            fmt.Println("error = ", err)
        }else {
            fmt.Println("bbbbbbbbbbbbb")
        }
    }()
    var a [10]int
    a[x] = 555
}

func testc()  {
    fmt.Println("ccccccccccc")
}

func main() {
    testa()
    testb(1)
    testc()
}

这里传的值小于10的时候,正常打印

技术分享图片

传的值大于10的时候则会打印异常日志并继续执行程序

技术分享图片

 

[GO]revoer的应用

原文:https://www.cnblogs.com/baylorqu/p/9660776.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!