You use throws in a method signature to indicate that a method is capable of throwing a particular exception. Any code calling this method will have to deal with the possibility that that particular exception can occur.
The throw keyword is used to actually throw an exception. It can be used wherever you can place a statement.
In James' above example, any code that calls checkString() will have to deal with the fact that it *can* throw an exception, and checkString() actually throws an exception if the argument is null.
The mind is a strange and wonderful thing. I'm not sure that it will ever be able to figure itself out, everything else, maybe. From the atom to the universe, everything, except itself.