```python
def clip_text(text: str, start: int, end: int) -> str:
    """
    Return the part of the text between start and end, inclusive of start and exclusive of end.
    If start is greater than end, raise ValueError.
    """
    if start > end:
        raise ValueError("Start cannot be greater than end.")
    
    # Normalize start and end to handle cases where they exceed the length of the text
    start = max(0, min(start, len(text)))
    end = max(0, min(end, len(text)))
    
    # Clip the text based on the normalized start and end
    return text[start:end]
```