gookit / event

📢 Lightweight event manager and dispatcher implements by Go. Go实现的轻量级的事件管理、调度程序库, 支持设置监听器的优先级, 支持使用通配符来进行一组事件的监听
https://pgk.go.dev/github.com/gookit/event
MIT License
501 stars 59 forks source link

建议 Event Name 检查出错后返回 error,而不是直接 panic #66

Open flyinghail opened 3 months ago

flyinghail commented 3 months ago

目前库中,检查 Event Name 不符合规则后会直接 panic,逻辑隐蔽,处理粗暴,很容易被坑。

建议改成返回 error

相关代码见 util.go:

// goodName check event name is valid.
func goodName(name string, isReg bool) string {
    name = strings.TrimSpace(name)
    if name == "" {
        panic("event: the event name cannot be empty")
    }

    // on add listener
    if isReg {
        if name == AllNode || name == Wildcard {
            return Wildcard
        }
        if strings.HasPrefix(name, AllNode) {
            return name
        }
    }

    if !goodNameReg.MatchString(name) {
        panic(`event: name is invalid, must match regex:` + goodNameReg.String())
    }
    return name
}