Did you try commenting out the "throws Exception" part? This is probably what you would've gotten:
SomeClass.java:41: unreported exception java.lang.Exception; must be caught or declared to be thrown
throw new Exception( "Age cannot be negative number." );
It works kinda like throwing a ball: you first announce that you'll be throwing a basketball [ throw new Exception( "..." ) ];, and then you have to throw it [ throws Exception ].
If you don't have "throws Exception" in method definition, that means you are throwing an exception you just created (or received from somewhere), but your method definition does not have information about the thrown exception. But if another class wants to use your method, it has to know if there might be any exceptions thrown, and of what type they are. This is why the compiler won't compile the code.
Play around a little, adding/removing various exception types in the method block and definition, and in your try/catch clauses. Try something like this:
This is still valid for the method definition:
Andris