The most annoying thing here is that OverflowError doesn't subclass ValueError.
My intuition would rather make OverflowError subclass RuntimeError. Am I wrong?
That means I support Serhiy's point that %c would be less surprising raising a ValueError. Backwards compatibility is an unfortunate blocker here, I suppose.