57_recover的使用

Posted zhaopp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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]int1, 2, 3, 4
test(a, 7)

以上是关于57_recover的使用的主要内容,如果未能解决你的问题,请参考以下文章

Go语言基础:闭包_defer_recover

ORA-279 signalled during: alter database recover logfile

Go语言基础:闭包_defer_recover

go 错误处理panic recover

使用 Spring-Retry 的 Kotlin 未调用 @Recover

Android recover文字显示