zoukankan      html  css  js  c++  java
  • [GO]revoer的应用

    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的时候则会打印异常日志并继续执行程序

  • 相关阅读:
    SpringBoot之使用外部的启动类
    CCF——最小差值(2017-12)
    CCF——买菜(2018-09)
    CCF——卖菜(2018-09)
    2792. Grammar Lessons
    2756. Lucky Transformation
    2776. String Task
    2794. Petya and Strings
    2810. Palindromic Times
    14. Football
  • 原文地址:https://www.cnblogs.com/baylorqu/p/9660776.html
Copyright © 2011-2022 走看看