mirror of
https://github.com/Mrs4s/MiraiGo.git
synced 2025-05-04 11:07:40 +08:00
* 重构:netLoop下移到Listener * 格式:修正NewClient中注释段缩进 * 格式:更名&将代码移动到对应位置 * 格式:TCPListener去锁化 * 修正:netLoop中的错误调用 * 修正:使其可用 * 修正:使功能一致 * 修正:现在可正常运行 * 优化:更早的释放锁(? * 修正:未写完的部分 * 修正:潜在的断线时仍然认为在线这件事&删除空重复文件 * 文档:添加部分注释 * 修正:CoverError可能引起死锁 * 修正:永远不会被触发的DisconnectEvent * 文档:将注释移动至对应位置
27 lines
389 B
Go
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
|
|
}
|