当前位置: 首页 > news >正文

什么网站可以做微招聘seo综合查询平台

什么网站可以做微招聘,seo综合查询平台,广告设计公司成本核算具体到每个项目,网站开发工程师面试试题Go 语言异常处理详解(error - 错误、panic - 恐慌、recover - 恢复)在 Go 语言中,异常处理主要通过 error、panic 和 recover 三个机制来实现,它们分别用于处理不同级别的错误情况。1、error:处理非致命错误error 一般…

Go 语言异常处理详解(error - 错误、panic - 恐慌、recover - 恢复)

在 Go 语言中,异常处理主要通过 errorpanic 和 recover 三个机制来实现,它们分别用于处理不同级别的错误情况。

1、error:处理非致命错误

error 一般用于处理一些比较低级的错误,不会造成程序中断或者宕机。Go 标准库提供了创建错误的函数。

简单使用标准库的错误函数

package main
import ("errors""fmt"
)
func main() {err1 := fmt.Errorf("%s", "this is a Errorf")fmt.Println("err1: ", err1)err2 := errors.New("this New error")fmt.Println("err2: ", err2)
}

error 常用用法

通常在函数返回时携带错误信息,通过判断 error 是否为 nil 来确定操作是否成功:

package main
import ("errors""fmt"
)// error 为 nil 说明正常,否则报错,信息从 errors.New 获取
func MyDiv(a, b int) (result int, err error) {err = nilif b == 0 {err = errors.New("分母不能为0")} else {result = a / b}return // 等价于 return result, err
}func main() {ret, err := MyDiv(2, 2)if err == nil {fmt.Println("ret = ", ret)} else {fmt.Println("表达式存在非法值, err: ", err)}ret, err = MyDiv(2, 0)if err == nil {fmt.Println("ret = ", ret)} else {fmt.Println("表达式存在非法值, err: ", err)}
}

errors.New 函数的实现原理:

func New(text string) error {return &errorString{text}
}

通过这个函数获取一个 errorString 结构,从而可以调用 Error 方法。

2、panic:处理致命错误

panic 一般在发生致命错误时被调用,例如数组越界、空指针等,我们也可以手动调用 panic() 函数触发。它类似于 C 语言的 assert() 断言函数。

2.1 手动调用 panic

package main
import "fmt"func testa() {fmt.Println("aaaaaaaaaaaaaa")
}func testb() {fmt.Println("bbbbbbbbbbbbbb")// 手动调用 panic() 会触发断言panic("manual triggered assertions, the program breaks")
}func testc() {fmt.Println("ccccccccccccccc")
}func main() {testa()testb()testc() // 这行代码不会执行,因为程序已被 panic 中断
}

结果

aaaaaaaaaaaaaa
bbbbbbbbbbbbbb
panic: manual triggered assertions, the program breaksgoroutine 1 [running]:
main.testb().../main.go:11 +0x65
main.main().../main.go:19 +0x50
exit status 2

2.2 数组越界造成 panic

package main
import "fmt"func testa() {fmt.Println("aaaaaaaaaaaaaa")
}func testb(index int) {// 数组越界造成 panic 断言var x [10]intfmt.Println("x: ", x[index])
}func testc() {fmt.Println("ccccccccccccccc")
}func main() {testa()testb(10) // 数组越界触发断言testc()   // 这行代码不会执行
}

结果

aaaaaaaaaaaaaa
panic: runtime error: index out of range [10] with length 10goroutine 1 [running]:
main.testb(0xa).../main.go:10 +0x5f
main.main().../main.go:18 +0x50
exit status 2

3、recover 函数:恢复程序执行

当发生 panic 错误时,程序会中断执行。但有时候我们希望捕获这个中断,让程序继续运行,这时可以使用 recover 函数。

注意recover() 只有在 defer 调用的函数中才有效。当函数中定义了 defer,并且该函数发生了 panic 错误,recover 可以捕获该错误,使程序恢复正常。

package main
import "fmt"func testa() {fmt.Println("aaaaaaaaaaaaaa")
}func testb(index int) {// 设置 recoverdefer func() {if err := recover(); err != nil {// 不要再次调用 recover() 作为信息,因为错误已经被捕获fmt.Println("errInfo: ", err)}}()// 数组越界造成 panic 断言var x [10]intfmt.Println("x: ", x[index])
}func testc() {fmt.Println("ccccccccccccccc")
}func main() {testa()testb(10) // 数组越界触发断言,但会被 recover 捕获testc()   // 这行代码会正常执行
}

结果

aaaaaaaaaaaaaa
errInfo:  runtime error: index out of range [10] with length 10
ccccccccccccccc

通过 recover 捕获 panic 后,程序会从 panic 发生的地方继续向下执行,而不会中断整个程序。这在需要容错处理的场景中非常有用。

http://www.dtcms.com/a/444967.html

相关文章:

  • 曲靖网站微信建设网站建设北京个人
  • 万网 网站托管做网站 卖会员
  • 专业做网站服务泉州网站建设技术托管
  • 移动网站搭建ok卡怎么在京东网上商城
  • 公司网站域名cn和com有没有给宝宝做辅食的网站
  • 新闻自动采集网站源码网站制作费用多少
  • 高端上海网站设计公司价格wordpress当前文章tags
  • 什么语言建手机网站网站做302重定向会怎么样
  • 互联网创业项目整合网站手机硬件开发
  • 做网站前景怎样多商城系统
  • 安徽网站seo开发简单小程序公司
  • 网站建设基本技术wordpress用户权利
  • 免费查企业法人seo发帖工具
  • 百度公司网站排名怎么做做设计有哪些接私活的网站
  • 清洁公司网站建设百度app安装免费下载
  • 福州做网站互联网公司腰椎间盘突出怎么锻炼
  • 昆山网站建设费用重庆彭水网站建设
  • 建设银行网站上交医保app网站建设软件
  • 深圳品牌网站推广公司城镇建设部网站
  • 百度快照抓取的是网站哪里的内容微博seo营销
  • wordpress直接访问站点重庆网络公司
  • 成都创新网站建设上海建设工程质量监督站网站
  • 石狮住房和城乡建设网站国外最牛设计网站
  • 天津和平做网站贵吗苏州h5网站建设价格
  • 狮山镇建设局网站杭州建设网站职称人才工作专题
  • 服装网站建设公司推荐邯郸网络安装
  • 网站建设需要域名吗?wordpress tag搜索
  • SEO网站建设入驻程流智慧团建网站没有验证码
  • 网站建设好做吗网站开发编程环境
  • 河北网站建设搭建四川省住房与建设厅网站