do not use generic Exception

Raising a generic Exception is generally  bad, because it can only be caught by catching all exception types. Even if not passing proper arguments in this case rather is a programming error by the caller who should not catch it, raising a specific exception is still nicer. :)
Being rather a programming error, I opted for using ValueError instead of adding another custom type to exceptions.