大家好,感谢邀请,今天来为大家分享一下recover是什么意思?用法、例句的问题,以及和宕机恢复(recover)--防止程序崩溃的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
1、宕机恢复(recover)--防止程序崩溃
2、Recover是一个Go语言的内建函数,可以让进入宕机流程中的goroutine恢复过来,recover仅在延迟函数defer中有效,在正常的执行过程中,调用recover会返回nil并且没有其他任何效果,
3、如果当前的goroutine陷入恐慌,调用recover可以捕获到panic的输入值,并且恢复正常的执行。
4、通常来说,不应该对进入panic宕机的程序做任何处理,但有时,需要我们可以从宕机中恢复,至少我们可以在程序崩溃前,做一些操作,举个例子,
5、当web服务器遇到不可预料的严重问题时,在崩溃前应该将所有的连接关闭,如果不做任何处理,会使得客户端一直处于等待状态,如果web服务器还在开发阶段,服务器甚至可以将异常信息反馈到客户端,帮助调试。
6、在Golang中,没有恢复的恐慌会导致进程崩溃,因此我最终将以下代码片段放在每个函数的开头:
7、//发生宕机时,获取panic传递的上下文并打印
8、caseruntime.Error://运行时错误
9、fmt.Println("runtimeerror:",err)
10、fmt.Println("error:",err)
11、fmt.Println("手动宕机前")
12、fmt.Println("手动宕机后")
13、fmt.Println("赋值宕机前")
14、fmt.Println("赋值宕机后")
15、一般deferrecover这种机制经常用在常驻进程的应用,比如Web服务,在Go里面,每一个Web请求都会分配一个goroutine去处理,在没有做任何处理的情况下,假如某一个请求发生了panic,就会导致整个服务挂掉,这是不可接受的,
16、所以在Web应用里面必须使用recover保证即使某一个请求发生错误也不影响其它请求。
17、注意:虽然panic/recover能模拟其他语言的异常机制,但并不建议在编写普通函数时也经常性使用这种特性。
关于本次recover是什么意思?用法、例句和宕机恢复(recover)--防止程序崩溃的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。