hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 文章 - 后端开发 - 正文 看Cosplay古风插画小姐姐,合集图集打包下载:炫龙网 · 炫龙图库

golang recover后怎样返回_后端开发

2019-12-18后端开发ki4网16°c
A+ A-

recover

虽然没有try catch机制,Go其实有一品种似的recover机制,功用弱了点,用法很简单: (引荐进修:go)

package main
import "fmt"
func main() {
fmt.Printf("%d\n", cal(1, 2))
fmt.Printf("%d\n", cal(5, 2))
fmt.Printf("%d\n", cal(5, 0))
fmt.Printf("%d\n", cal(9, 2))
}
func cal(a, b int) int {
defer func() {
if err := recover(); err != nil {
fmt.Printf("%s\n", err)
}
}()
return a / b
}

起首,人人得明白defer的作用,简单说defer就类似于面向对象内里的析构函数,在这个函数停止的时刻会实行,即使是panic致使的停止。

所以,在cal函数内里每次停止的时刻都邑搜检有无非常发生,假如发生了我们能够处置惩罚,比如说纪录日记,如许顺序还能够继承实行下去。

package main

import (
        "errors"
        "fmt"
        "math"
)

func main() {
        _, err := IntFromInt64(math.MaxInt32 + 1)
        if err != nil {
                fmt.Println(err)
        }
}

func ConvertInt64ToInt(i64 int64) int {
        if math.MinInt32 <= i64 && i64 <= math.MaxInt32 {
                return int(i64)
        }
        panic("can't convert int64 to int")
}

func IntFromInt64(i64 int64) (i int, err error) {//这里
        defer func() {
                if err2 := recover(); err2 != nil {
                        i = 0//这里
                        err = errors.New("ttt")//这里
                }
        }()
        i = ConvertInt64ToInt(i64)
        return i, nil
}

重要头脑:return之前应用defer修正返回变量(提早确定为i和err)的值

以上就是golang recover后怎样返回的细致内容,更多请关注ki4网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
golang recover后怎样返回_后端开发

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签:

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>