关于go:Go-快速入门指南-recover

概述

倡议先浏览 defer 大节。

recover 会终止 panic 状态并且返回 panic 的值,函数会从 panic 之前执行到的中央间接返回,不会持续往下执行。

语法规定

**recoverdefer 必须配套应用, 如果 recover 在其余中央执行会返回 nil,不会产生任何成果。
defer 必须在 panic 之前申明,否则 panic 会间接终止程序。**

例子

谬误捕捉

package main

import "fmt"

func main() {
    if r := recover(); r != nil {
        fmt.Printf("捕捉到 1 个谬误: %v\n", r)
    }

    panic("测试")

    println("程序执行不到这里")
}

// $ go run main.go
// 输入如下 
/**
  panic: 测试
  ...
  ...
  exit status 2
*/

正确捕捉

package main

import "fmt"

func main() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Printf("捕捉到 1 个谬误: %v\n", r)
        }
    }()

    panic("测试")

    println("程序执行不到这里")
}

// $ go run main.go
// 输入如下 
/**
  捕捉到 1 个谬误: 测试
*/

分割我

【腾讯云】轻量 2核2G4M,首年65元

阿里云限时活动-云数据库 RDS MySQL  1核2G配置 1.88/月 速抢

本文由乐趣区整理发布,转载请注明出处,谢谢。

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据