Golang中国

源码:https://github.com/qianlnk/exception

Exception

基于panic recover 实现类似try...catch...的异常处理机制。

Usage

    tr := exception.New()
    tr.Try(
        func() {
            n1, err := strconv.Atoi("123a")
            tr.Throw(err)
            n2, err := strconv.Atoi("0")
            tr.Throw(err)
            res := n1 / n2
            fmt.Println(res)
        },
    ).Catch(
        func(e exception.Exception) {
            fmt.Println("exception:", e)
        },
    )

output

exception: strconv.ParseInt: parsing "123a": invalid syntax

change 123a to 123

output

exception: runtime error: integer divide by zero
2 回复
ichenq
#1 ichenq • 2017-05-30 20:30

不错的trick

就好像在Lua里面实现类似C++里的Class一样,虽然可以用,但是其实背离了语言最初的设计哲学。

qianlnk
#2 qianlnk • 2017-05-31 09:18

@ichenq

这个用法其实也考虑应用场景 比如数据库事务 每步判断error然后rollback,用这个catch就很方便。

需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。