Right, it might. And those better be RuntimeException children, not a checked one. Because those who are mandatory to catch by client should bring him some value i.e they should represent some recoverable conditions 
```
try {
  do_somehting();
} catch (CanNotConnectException e) {
  retry_connection(fiveTimes);
}
```
Checked exceptions in API should always be meaningful for client of this API. Uncheck one on the contrary better be used for programming errors, like this one.

What i say here - enforcing try...catch on .close() call does not bring much value for client, does not represent andy recoverable condition so it should be not checked one (but documented)

Here are more details [on this topic](http://allenlsy.com/NOTES-of-Effective-Java-8-Exceptions/)