首页 > 编程知识 正文

panic full,panic的过去式和过去分词

时间:2023-05-06 04:00:09 阅读:216669 作者:4639

panic

异常指的是不应该出现问题的地方出现了问题

例如:引用空指针、数组下标越界、除数为零。

使用panic抛出异常,抛出异常后将立即停止当前函数的执行并运行所有被defer的函数,然后将panic抛向上一层,直至程序carsh。但是也可以使用被defer的recover函数来捕获异常阻止程序的崩溃,recover只有被defer后才是有意义的。

对于异常,我们可以选择在一个合适的上游去recover,并打印堆栈信息,使得部署后的程序不会终止。

异常处理

1.程序开发阶段:坚持速错,让它挂掉

2.程序部署阶段:Goroutine如果panic了,并且没有recover,那么整个Golang进程就会异常退出。所以,一旦Golang程序部署后,在任何情况下发生的异常都不应该导致程序异常退出,我们在上层函数中加一个延迟执行的recover调用来达到这个目的,并且是否进行recover需要根据环境变量或配置文件来定,默认需要recover。

响应异常 打印堆栈的异常调用信息和关键的业务信息,以便这些问题保留可见。将异常转换为错误,以便调用者让程序恢复到健康状态并继续安全运行。 func main() {fmt.Println("start")startProcess()fmt.Println("done")}func startProcess() {defer func() {if info:= recover(); info != nil {//外层捕获panicfmt.Println(info)//打印栈信息debug.PrintStack()}}()fmt.Println(process())}func process() (result bool) {//处理业务逻辑,遇到panica := []int{1,2,3}//越界panica[6] = 4return}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。