I would expect the following code to raise a compile-time error on throw t;, because main is not declared to throw Throwable, but it c
throw t;
main
Throwable
Because the compiler is smart enough to know that a checked exception can not be thrown from the try block, and the caught Throwable is thus not a checked exception that must be declared.
Note that this is true since Java 7, if I'm not mistaken.