I believe that, if done right, checked exceptions can benefit an API. However, they weren’t given the proper TLC in the new Java 8 APIs, particularly in the Streams. But if Java was enhanced with default generics, the mess could be cleaned up.
There are many articles that explain the broad applications of Java 8’s new
Optional class (e.g., Tired of Null Pointer Exceptions? Consider Using Java SE 8’s
Optional!), but they focus on how authors can use
Optional to improve the design of their own APIs. I want to talk about how
Optional can be used to protect us from the APIs we didn’t write.