1
0
mirror of https://github.com/Mrs4s/MiraiGo.git synced 2025-05-04 11:07:40 +08:00
MiraiGo/utils/func.go
LXY f5b16b19c2
Network refactor (#229)
* 重构:netLoop下移到Listener

* 格式:修正NewClient中注释段缩进

* 格式:更名&将代码移动到对应位置

* 格式:TCPListener去锁化

* 修正:netLoop中的错误调用

* 修正:使其可用

* 修正:使功能一致

* 修正:现在可正常运行

* 优化:更早的释放锁(?

* 修正:未写完的部分

* 修正:潜在的断线时仍然认为在线这件事&删除空重复文件

* 文档:添加部分注释

* 修正:CoverError可能引起死锁

* 修正:永远不会被触发的DisconnectEvent

* 文档:将注释移动至对应位置
2021-12-27 15:36:52 +08:00

27 lines
389 B
Go

package utils
import "fmt"
// CoverError == catch{}
func CoverError(fun func()) error {
if fun == nil {
return nil
}
errCh := make(chan error, 1)
func() {
defer func() {
if r := recover(); r != nil {
if err, ok := r.(error); ok {
errCh <- err
} else {
errCh <- fmt.Errorf("%v", r)
}
} else {
errCh <- nil
}
}()
fun()
}()
return <-errCh
}