Error Handling Guide
Code Implementation Examples
Complete error handling code examples
Full Response Parser
async function processGeminiResponse(data) {
// 1. Check candidatesTokenCount (highest priority)
if (data.usageMetadata?.candidatesTokenCount === 0) {
return {
success: false,
errorType: 'ZERO_CANDIDATES_TOKEN',
userMessage: 'Content review failed, please modify and retry'
};
}
// 2. Check candidates
if (!data.candidates || !data.candidates.length) {
return {
success: false,
errorType: 'NO_CANDIDATES',
userMessage: 'System error, please retry later'
};
}
const candidate = data.candidates[0];
// 3. Check finishReason
if (candidate.finishReason && candidate.finishReason !== 'STOP') {
return {
success: false,
errorType: 'FINISH_REASON',
finishReason: candidate.finishReason,
userMessage: getFinishReasonMessage(candidate.finishReason)
};
}
// 4. Extract images and texts
const parts = candidate.content?.parts || [];
const images = [];
const texts = [];
for (const part of parts) {
if (part.inlineData?.data) {
images.push(`data:${part.inlineData.mimeType};base64,${part.inlineData.data}`);
}
if (part.text) {
texts.push(part.text);
}
}
// 5. Check for images
if (images.length > 0) {
return { success: true, images };
}
// 6. Text response
if (texts.length > 0) {
return {
success: false,
errorType: 'TEXT_RESPONSE',
userMessage: texts.join('\\n')
};
}
// 7. Unknown error
return {
success: false,
errorType: 'UNKNOWN',
userMessage: 'Generation failed, please retry'
};
}
function getFinishReasonMessage(finishReason) {
const messages = {
'PROHIBITED_CONTENT': 'Content violates safety policy',
'SAFETY': 'Content triggered safety filter',
'RECITATION': 'Possible copyright issue',
'MAX_TOKENS': 'Content too long'
};
return messages[finishReason] || `Rejected: ${finishReason}`;
}Usage Example
// Call API
const response = await fetch(API_URL, {
method: 'POST',
headers: headers,
body: JSON.stringify(payload)
});
const data = await response.json();
// Process response
const result = processGeminiResponse(data);
if (result.success) {
displayImages(result.images);
} else {
showErrorMessage(result);
}Error Display
function showErrorMessage(error) {
const { errorType, userMessage } = error;
const errorConfig = {
'ZERO_CANDIDATES_TOKEN': {
title: 'Content Review Failed',
icon: '🚫',
color: '#f44336'
},
'FINISH_REASON': {
title: 'Generation Rejected',
icon: '⚠️',
color: '#ff9800'
},
'TEXT_RESPONSE': {
title: 'Unable to Generate Image',
icon: '💬',
color: '#2196f3'
}
};
const config = errorConfig[errorType] || {
title: 'Error',
icon: '❌',
color: '#9e9e9e'
};
showModal({
...config,
message: userMessage
});
}Related Docs
How is this guide?