Exceptions are part of your domain language
A generic InvalidArgumentException tells you nothing about the business. It says an argument was wrong, but not which rule was broken or in what context. By the time you read it in a log, you are reverse-engineering intent from a stack trace.