Unchecked exceptions, which are subclasses of RuntimeException, do not have to be caught or declared in a throws clause. The compiler does not force you to handle them, although you can choose to do so. Only checked exceptions must be handled using a try/catch block or declared in the method signature.