If you have any code that might throw a checked exception, you must either enclose it in a try/catch clause that handles that potential exception, or must declare the checked exception in a throws clause in the containing method. Basically, the compiler will check that you do that with code that potentially throws checked exceptions. The compiler doesn't care about unchecked exceptions.
All code in my posts, unless a source is explicitly mentioned, is my own.
Exceptions are never caught by the compiler, because exceptions happen at runtime, not at compile time.
Checked exceptions are exceptions that are checked by the compiler - in other words, the compiler checks to see if you handle them with a try ... catch block, or declare that you throw them further with a throws-clause in the method declaration. If you don't handle or declare a checked exception in a throws-clause, the compiler will stop with an error.
Unchecked exceptions are not checked by the compiler - you do not need to catch them or declare them with a throws-clause.