How to Implement Graceful Degradation in Go Services

Implement graceful degradation in Go by wrapping risky calls in defer/recover blocks to catch panics and return safe fallback data.

Graceful degradation in Go services is achieved by wrapping external calls in recover blocks and returning fallback data or errors instead of crashing. Use defer with recover to catch panics from dependencies and return a safe default response.

func callExternalService() (string, error) {
	var result string
	var err error
	defer func() {
		if r := recover(); r != nil {
			err = fmt.Errorf("service degraded: %v", r)
			result = "fallback-data"
		}
	}()
	result, err = riskyExternalCall()
	return result, err
}