Different types of errors require different handling strategies. Classify errors into categories and apply appropriate response patterns: fail fast for user-actionable problems, retry with backoff for transient issues, and graceful degradation for non-critical failures.
Different types of errors require different handling strategies. Classify errors into categories and apply appropriate response patterns: fail fast for user-actionable problems, retry with backoff for transient issues, and graceful degradation for non-critical failures.
Error Classification Guidelines:
Example Implementation:
const shouldRetry = (err) => {
// Network errors - retry
if (!err.statusCode) return true;
// Rate limits and server errors - retry
if (err.statusCode === 429 || err.statusCode >= 500) return true;
// Client errors - fail fast
return false;
};
// For user-facing features - fail fast
if (userWantsTelemetry && !telemetryWorking) {
throw new Error('Telemetry failed - user should know');
}
// For background operations - graceful degradation
try {
await backgroundTelemetry();
} catch (error) {
console.debug('Background telemetry failed:', error);
// Continue execution
}
This approach prevents infinite retry loops on permanent failures while ensuring transient issues are handled gracefully and users are informed when they need to take action.
Enter the URL of a public GitHub repository