Suppose we have a Rectangle Class which has a constructor accepting length and breadth as parameters. But, if the user passes negative/zero values, then, what should be the behaviour? Should we validate it in the constructor itself?
If you have mutable reference types as parameters, take a defensive copy first and validate the arguments later. Then, as Carey said, throw an IllegalArgumentException. The same applies to any setXXX() methods.