zoukankan      html  css  js  c++  java
  • 57_recover的使用

    1.recover 一般与defer函数一起使用,可以直接使用recover,遇到错误时跳过,但是看不到错误

    2.recover只有在defer调用的函数中有效。

    3.运行时panic异常一旦被引发就会导致程序崩溃。这当然不是我们愿意看到的,
      因为谁也不能保证程序不会发生任何运行时错误。

      4.不过,Go语言为我们提供了专用于“拦截”运行时panic的内建函数——recover。

      它可以是当前的程序从运行时panic的状态中恢复并重新获得流程控制权。

      5.如果调用了内置函数recover,并且定义该defer语句的函数发生了panic异常,recover会使程序从panic中恢复,并返回panic value。导致panic异常的函数不会继续运行,但能正常返回。在未发生panic时调用recover,recover会返回nil。


    package main

    import "fmt"

    func test(a [4]int, i int) {
    defer func() {
    for j := 0; j < i; j++ {
    //数组越界
    //recover 会接收错误的信息,但是不会中断,会继续向下执行
    if err := recover(); err != nil {
    fmt.Println(err) //会打印错误的信息

    } else {

    fmt.Println(a[j]) //panic: runtime error: index out of range
    }
    }
    }() //调用匿名函数
    }

    func main() {
    //可以显示调用painc,使程序中断
    var a [4]int = [4]int{1, 2, 3, 4}
    test(a, 7)

    }
    每天的价值就是不停息的前进!!!
  • 相关阅读:
    深入理解计算机系统读书笔记之第二章信息的表示和处理
    深入理解计算机系统读书笔记之第一章:漫游
    算法三之归并排序
    算法二之子集和数问题
    算法一之N皇后问题
    刚刚注册写一写
    linux alias(命令别名)
    linux [CTRL]+c与[CTRL]+d
    linux终端类型
    linux 进程简介
  • 原文地址:https://www.cnblogs.com/zhaopp/p/11625863.html
Copyright © 2011-2022 走看看