Back to all reviewers

Handle errors intentionally

block/goose
Based on 4 comments
TypeScript

Avoid generic catch-all error handling that masks important failures. Instead, be selective about which errors to handle locally versus letting them bubble up to higher-level handlers. When you do handle errors locally, implement safe defaults and use robust parsing methods.

Error Handling TypeScript

Reviewer Prompt

Avoid generic catch-all error handling that masks important failures. Instead, be selective about which errors to handle locally versus letting them bubble up to higher-level handlers. When you do handle errors locally, implement safe defaults and use robust parsing methods.

Key principles:

  • Let errors bubble up unless you can meaningfully handle them at the current level
  • When handling errors locally, default to the safest behavior (e.g., showing generic warnings instead of assuming no security issues)
  • Use safe parsing methods like safeJsonParse instead of raw JSON.parse()
  • Handle specific error conditions (like HTTP 503/529 status codes) with appropriate recovery strategies

Example of intentional error handling:

// Bad: Generic catch that hides all errors
try {
  const result = await response.json();
  return result;
} catch (error) {
  return { success: false }; // Masks what actually went wrong
}

// Good: Let parsing errors bubble up, handle specific conditions
const result = await safeJsonParse(response);

// Handle specific recoverable errors
if (response.status === 529 || response.status === 503) {
  // Retry logic for service overload
  return retryRequest();
}

// For security scans, default to safe behavior on failure
try {
  const scanResult = await scanRecipe(recipeConfig);
  setHasSecurityWarnings(scanResult.has_security_warnings);
} catch (error) {
  setHasSecurityWarnings(false); // Safe default, show generic warning
}
4
Comments Analyzed
TypeScript
Primary Language
Error Handling
Category

Source Discussions