Hi chin,
there are 2 types of exceptions.
1. Unchecked Exception : Error and its subclasses and Runtime exceptions are unchecked one.
2. Checked Exception : all remaining classes are checked one.
The programmer has to deal with checked exception by means of try-catch block or throws clause. But for unchecked one , they can be handled by default exception handler. That's why---
i threw other exceptions and i get compilation error "exception has to be declared to be thrown".
try to modify fn like this...
static void wrench() {
throw new RunTimeException();
}
}
it'll compile ...being an unchecked exception.
but for checked one, u have to have either try-catch or throws clause.
Hope this helps

Rashmi