Geek_3b0433
2025-07-14
来自广东
// 调用 getUserProfile err := getUserProfile(userID) if err != nil { if errors.Is(err, sql.ErrNoRows) { return ErrUserNotFound } // 其他数据库错误会继续向下处理 } // 调用 calculateScore err = calculateScore(profile) if err != nil { var invalidProfileErr *validation.ErrInvalidProfile if errors.As(err, &invalidProfileErr) { log.Printf("Validation error: %v", invalidProfileErr) return ErrProcessingFailed } // 其他错误继续处理 } // 调用 updateAnalytics err = updateAnalytics(userID, score) if err != nil { var tempErr interface{ Temporary() bool } if errors.As(err, &tempErr) && tempErr.Temporary() { // 重试一次 retryErr := updateAnalytics(userID, score) if retryErr != nil { return fmt.Errorf("failed to update analytics after retry: %w", retryErr) } } else { // 非临时网络错误,直接返回 return fmt.Errorf("failed to update analytics: %w", err) } } // 其他未知错误统一包装处理 return fmt.Errorf("failed to process user data for id %d: %w", userID, err)
展开
作者回复: 👍