Back to list
andyngdz

error-handling-patterns

by andyngdz

ExoGen Backend

2🍴 0📅 Dec 19, 2025

SKILL.md


name: error-handling-patterns description: Use when adding error handling - exception patterns, HTTP codes, domain exceptions

Error Handling Patterns

Use this skill when implementing error handling for features or API endpoints.

Checklist

Exception Handling Rules

  • Never use bare except - always specify exception type
  • Catch specific exceptions first, then broader ones
  • Use domain-specific exception classes with meaningful names
  • Log errors before re-raising or returning error responses

Domain-Specific Exceptions

  • Create custom exception classes that extend built-in exceptions
  • Use meaningful exception names that describe the error condition
  • Include helpful error messages with context
class ModelNotFoundError(ValueError):
    """Raised when a requested model is not found."""
    pass

class InsufficientMemoryError(RuntimeError):
    """Raised when GPU memory is insufficient for operation."""
    pass

API Response Patterns

  • Always use Pydantic schemas for responses (never raw dicts)
  • Include error details in response schema
  • Use appropriate HTTP status codes

HTTP Status Codes

Use the correct status code for each situation:

  • 200 - Success (operation completed successfully)
  • 400 - Bad Request (invalid input, validation failure)
  • 404 - Not Found (resource doesn't exist)
  • 409 - Conflict (resource already exists, state conflict)
  • 500 - Internal Server Error (unexpected failure)

Example Pattern

from app.services import logger_service
from app.schemas.responses import ErrorResponse, SuccessResponse

logger = logger_service.get_logger(__name__, category='API')

async def generate_image(config: GenerateConfig, db: Session):
    try:
        result = await service.generate_image(config, db)
        return SuccessResponse(data=result)
    except ValueError as error:
        logger.error(f"Generation failed: {error}")
        raise HTTPException(status_code=400, detail=str(error))
    except torch.cuda.OutOfMemoryError:
        logger.error("Out of GPU memory")
        raise HTTPException(status_code=500, detail="Insufficient GPU memory")
    except Exception as error:
        logger.exception(f"Unexpected error: {error}")
        raise HTTPException(status_code=500, detail="Internal server error")

Validation

  • Verify all exception types are specific (no bare except:)
  • Verify all API responses use Pydantic schemas
  • Verify HTTP status codes match the error conditions
  • Verify errors are logged before raising/returning

Score

Total Score

65/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新

+5
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

+5

Reviews

💬

Reviews coming soon