@throws should be only placed in the docBlock of the method where the exception is thrown. If you put it up the stack it will be redundant and would be a violation of DRY principle!
In java you can choose between @throws and @exception ..see here
By the way: You are throwing the wrong type of exception. You should throw a \OutOfBoundsException. Otherwise it's a violation of POLA. \InvalidArgumentException is for an unexpected argument type.