See http://howtodoinjava.com/2013/04/04/java-exception-handling-best-practices/

Unless there are specific checked exceptions that are thrown the method should not say anything - certainly not ```throws Exception``` since that forces the caller to catch Exception, which you shouldn't do (catches both exceptions and runtime exceptions. TIL you shouldn't catch Throwable either, which implies that we should actually be catching RuntimeException). There's space for discussion around whether specific exceptions should be checked or unchecked - typically anything which cannot be meaningfully reacted to by the caller should be unchecked I believe. It is also good to document runtime exceptions in javadoc using ```@throws```. Also common guidance is that exceptions should always be for exceptional circumstances - if it is to be expected that something may go wrong (like connecting to a web site), that should not be managed through exceptions but be part of the standard API via return values or whatever.