Các hàm tạo MongoClient không đưa ra bất kỳ ngoại lệ nào liên quan đến kết nối. Thay vào đó, chúng trở lại ngay sau khi bắt đầu một hoặc nhiều chuỗi nền cố gắng thiết lập kết nối và xác thực dựa trên thông tin đăng nhập được cung cấp.
Chỉ khi một ứng dụng sử dụng MongoClient để thực hiện một số thao tác trên máy chủ MongoDB thì một ngoại lệ mới được đưa ra. Tuy nhiên, ngoại lệ đó là ngoại lệ thời gian chờ chung chỉ ra rằng trình điều khiển không tìm thấy máy chủ phù hợp cho hoạt động trước khi hết thời gian chờ lựa chọn máy chủ. Ví dụ:
MongoClient client = new MongoClient(asList(new ServerAddress("localhost"), new ServerAddress("localhost:27018")),
singletonList(MongoCredential.createCredential("username",
"admin",
"bad".toCharArray())),
MongoClientOptions.builder().serverSelectionTimeout(1000).build());
try {
client.getDB("admin").command("ping");
} catch (MongoTimeoutException e) {
// do something
}
sẽ ném một MongoTimeoutException sau 1 giây. Mặc dù không có MongoSecurityException nào được ném ra, thông báo của MongoTimeoutException sẽ chứa các chi tiết liên quan. Ví dụ:khi kết nối với bộ bản sao ba thành viên khi một trong các máy chủ gặp sự cố và xác thực không thành công trên hai máy chủ còn lại, trường thông báo của MongoTimeoutException sẽ giống như sau:
Đã hết thời gian chờ sau 1000 mili giây trong khi chờ máy chủ khớp vớiReadPreferenceServerSelector {readPreference =primary}. Chế độ xem của máy khách là {type =UNKNOWN, các máy chủ =[{address =localhost:27017, type =UNKNOWN, state =CONNECTING, exception ={com.mongodb.MongoSocketOpenException:Exception openssocket}, do {java.net.ConnectException:Kết nối bị từ chối}}, {address =localhost:27018, type =UNKNOWN, state =CONNECTING, exception ={com.mongodb.MongoSecurityException:Exceptionauthenticating MongoCredential {cơ chế =null, userName ='username', source ='admin', password =, engineProperties ={}}}, do {com.mongodb.MongoCommandException gây ra:Lệnh không thành công với lỗi 18:'Xác thực không thành công.' trên máy chủ localhost:27018. Phản hồi đầy đủ là {"ok":0.0, "code":18, "errmsg":"Xác thực không thành công". }}}]