zoukankan      html  css  js  c++  java
  • panic 和 recover的区别

    panic:

    1.报告致命错误的一种方式,如:数组访问越界,空指针引用等。
    2.panic异常发生时,程序会中断运行。

    import "fmt"
    
    func testa() {
    	fmt.Println("aaaaaaaaa")
    }
    
    func testb(i int) {
    	fmt.Println("bbbbbbbbb")
    	arr := [10]int{}
    	// var arr [10]int
    	arr[i] = 123
    	// panic("this is a panic test")
    }
    
    func testc() {
    	fmt.Println("ccccccccc")
    }
    
    func main() {
    	testa()
    	testb(10)
    	testc()
    }
    

    结果:

    recover:

    panic异常一旦被引发就会导致程序崩溃。
    所以Go语言提供了专用于“拦截”运行时panic的内建函数—recover。
    它可以使当前程序从panic的状态中恢复,重新获得流程控制权,并返回panic value。
    在未发生panic时调用recover,recover会返回nil。

    注意:recover只有在defer调用的函数中有效。

    import "fmt"
    
    func testb(x int) {
    	defer func() {
    		// recover()
    		// fmt.Println(recover())
    		if err := recover(); err != nil {
    			fmt.Println("err 是:", err)
    		}
    	}()
    	var a [10]int
    	a[x] = 123
    }
    
    func testc() {
    	fmt.Println("ccccccccccc")
    }
    
    func main() {
    	testb(11)
    	testc()
    }
    

    结果:

    以上。

    朱子家训说:宜未雨而筹谋,勿临渴而掘井。 任何事情要到了跟前才想解决办法,那我们岂不很被动!
  • 相关阅读:
    【js】replace()
    【js】indexOf()
    【js】sort()
    【js】typeof与instanceof
    【js】with 语句
    跳出框架iframe的操作语句
    Mongodb启动命令mongod参数说明
    ERROR: child process failed, exited with error number 100
    SELECT控件add方法 ie 类型不匹配
    Red hat linux ping: unknown host www.baidu.com
  • 原文地址:https://www.cnblogs.com/jianyingjie/p/11832326.html
Copyright © 2011-2022 走看看