Die Serververbindungen werden auf Daemon-Threads erstellt. Um es kurz zu machen, Sie können die verbindungsbezogenen Fehler beim Erstellen des Mongo-Clients nicht überprüfen.
Sie müssen Ihre Verbindungsprüfung verzögern, wenn Sie Ihre erste echte Datenbank erstellen, die einen Lese- oder Schreibvorgang beinhaltet.
Nur zu Demonstrationszwecken, damit Sie sich ein Bild machen können.
MongoClient mongoClient = new MongoClient("127.0.34.1", 89);
DB db = mongoClient.getDB("test");
try {
db.addUser("user", new char[] {'p', 'a', 's', 's'});
} catch(Exception e) { MongoTimeoutException exception}
MongoSocketOpenException vom Deamon-Thread
INFO: Exception in monitor thread while connecting to server 127.0.34.1:89
com.mongodb.MongoSocketOpenException: Exception opening socket
at com.mongodb.connection.SocketStream.open(SocketStream.java:63)
at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:115)
at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:116)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.ConnectException: Connection refused: connect
MongoTimeoutException vom Hauptthread
Exception in thread "main" com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=127.0.34.1:89, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketOpenException: Exception opening socket},
caused by {java.net.ConnectException: Connection refused: connect}}]
at com.mongodb.connection.BaseCluster.createTimeoutException(BaseCluster.java:375)
Umschließen Sie also den Code mit MongoTimeoutException
im try-catch-Block und es funktioniert in Ordnung, um verbindungsbezogene Fehler zu überprüfen.