Wrap any exceptions that occur during communications in a MongoCommunicationException.
Except: any subclasses of SystemException. These exceptions are all runtime errors that aren't meant to be caught because there is usually nothing you can do about them.
This is backward breaking to any applications that are catching the unwrapped exceptions. They will now need to catch MongoConnectionException and examine the inner exception.