Re: Reserved word "throws"
Throw means that at that point, an object (almost always an Exception) gets thrown, and the program skips over all other code until that object is caught.
There are two types of Exceptions: checked and unchecked. Basically, the difference is the compiler forces you to catch checked exceptions and doesn't for unchecked exceptions. If a method is declared that it throws a certain type of checked Exception (it can be declared to throw unchecked exceptions, too but it doesn't force anyone to catch them), it simply means that the method doesn't have to catch that Exception if it's thrown somewhere inside, but who-ever is calling that method must catch it (unless that method is declared to throw that same type of exception, too).
If you declare your main method to throw Exception, that means it doesn't have to catch it. The JVM will automatically catch all exceptions that come back to it, i.e. any that weren't caught and have percolated up past the main method.