利用golang实现封装trycatch异常处理实例代码

 行业动态     |      2019-09-02 15:50

前言

社区不少人在谈论 golang 为毛不用trycatch模式,而采用苛刻的recovery、panic、defer组合….  从网上整了一个trycatch包,感觉不错,拿出来分享下…下面话不多说,来一起看看详细的介绍。

示例代码

package main
import 
 defaultcatch func
func  try) trycatch {
 t.errchan = make
 t.catches = map[reflect.type]func{}
 t.defaultcatch = func {}
 go func {
 defer func {
 t.errchan - recover
 block
 return t
func  catchall) trycatch {
 t.defaultcatch = block
 return t
func  catch) trycatch {
 errortype := reflect.typeof
 t.catches[errortype] = block
 return t
func  finally) trycatch {
 err := -t.errchan
 if err != nil {
 catch := t.catches[reflect.typeof]
 if catch != nil {
 catch)
 } else {
 t.defaultcatch)
 block
 return t
type myerror struct {
 error
func main {
 trycatch{}.try {
 println
 panic
 }).catch {
 println
 }).catchall {
 println
 }).finally {
 println
 println
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对萬仟网的支持。