A lot of books and tutorials say things along the lines of: "The Java runtime system requires that a method either catch or specify all checked exceptions that can be thrown by that method" But I can write classes without throwing or catching anything..... ?
Due to heavy use of checked exceptions and minimal use of unchecked exceptions, there has been a hot debate in the Java community regarding true value of checked exceptions. Use checked exceptions when the client code can take some useful recovery action based on information in exception. Use unchecked exception when client code cannot do anything. For example, convert your SQLException into another checked exception if the client code can recover from it and convert your SQLException into an unchecked (i.e. RuntimeException) exception, if the client code cannot do anything about it.