Golang定时任务表达式合法性校验
[本文出自天外归云的博客园]
最近在使用golang的定时任务工具:https://github.com/jakecoffman/cron(这个仓库的优点是可以给定时任务起名字)
问题:对于用户输入的定时任务表达式,如何校验其合法性呢?
通过查看源码,我找到了验证的方法(通过Parse函数),需要自己捕获panic判断定时任务表达式是否合法。代码如下:
// ParseSpec 尝试转换定时任务表达式 func ParseSpec(spec string) (err error) { defer func() { if r := recover(); r != nil { log.Errorf("定时任务表达式(%+v)出错:%+v", spec, r) switch x := r.(type) { case string: err = errors.New(x) case error: err = x default: err = errors.New("发生未知panic") } } }() cron.Parse(spec) return } // IsValidSpec 校验spec表达式是否合法 func IsValidSpec(spec string) (valid bool, err error) { err = ParseSpec(spec) if err == nil { log.Infof("定时任务表达式(%+v)合法", spec) valid = true } else { log.Errorf("定时任务表达式(%+v)非法", spec) valid = false } return }
相关资料:
1. 源码中对定时任务表达式的解析函数:https://github.com/jakecoffman/cron/blob/master/parser.go
2. Golang panic的捕获:https://blog.csdn.net/lanyang123456/article/details/79179097
本文来自博客园,作者:天外归云,转载请注明原文链接:https://www.cnblogs.com/LanTianYou/p/14395041.html