I intentionally chose `Exception` so that a user can throw whatever he or she wants to throw.  We can wrap it with `SSLException` later internally.