Best practices for gracefully handling API errors
// Complete Error Handling Example
class APIError extends Error {
constructor(message, status, code) {
super(message);
this.status = status;
this.code = code;
}
}
async function handleAPICall() {
try {
const response = await fetch('/api/chat', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ /* ... */ })
});
if (!response.ok) {
const error = await response.json();
switch (response.status) {
case 400:
throw new APIError('Invalid request parameters', 400, error.code);
case 401:
throw new APIError('Authentication failed', 401, error.code);
case 429:
throw new APIError('Too many requests', 429, error.code);
case 500:
throw new APIError('Server error', 500, error.code);
default:
throw new APIError('Unknown error', response.status, error.code);
}
}
return await response.json();
} catch (error) {
console.error('API call failed:', error);
// Log errors, show user-friendly error messages, etc.
throw error;
}
}Complete integration in 5 minutes
Follow recommended development patterns
Get professional help