Earlier quoted context omitted.
Another example of "Wtf were they thinking when they wrote this?" in the Java stdlib is MessageDigest. To build a digester object, you must pass it a string literal to tell it which algorithm to use, and catch a NoSuchAlgorithm exception. Instead of, you know, just using an enum for all supported algorithms.
I think standard Java library API doesn't know what algorithms are supported on particular platform, additionally you can implement your own messagedigest.
https://docs.oracle.com/javase/7/docs/api/java/security/Mess...
And here:
https://docs.oracle.com/javase/7/docs/technotes/guides/secur...