审查这个生成的操作错误包装器。
包装 execute 的失败并加入操作和任务 ID,保留可匹配的原因,避免重复报告,并在执行成功时返回 nil。
Go
type OpError struct {
Op string
Err error
}
func (e *OpError) Error() string {
return e.Op + ": " + e.Err.Error()
}
func (e *OpError) Unwrap() error {
return e.Err
}
func (e *OpError) Is(target error) bool {
return errors.Is(e.Err, target)
}
func runJob(id string) error {
err := execute(id)
if err != nil {
log.Printf("job %s failed: %v", id, err)
return &OpError{Op: "run job " + id, Err: err}
}
return &OpError{Op: "run job " + id}
}
生成代码仅作示例,不代表任何特定模型