Chcę być w stanie wykryć, czy serwer mongo jest dostępny ze sterownika java w celu reagowania na wszelkie nieprawidłowe zdarzenia, tak jak na ziemi JDBC itp. Wszystko działa dobrze, gdy serwer jest gotowy, ale mam problemy zrozumieć, dlaczego tak trudno jest wykryć błędy. Mam to uczucie, ponieważ klient mongo działa w innym wątku i nie rzuca się do mnie czy coś takiego?Sterownik java mongodb Jak złapać wyjątki?
try {
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase db = mongoClient.getDatabase("mydb");
// if db is down or error getting people collection handle it in catch block
MongoCollection<Document> people = commentarr.getCollection("people");
} catch (Exception e) {
// handle server down or failed query here.
}
Rezultatem jest
INFO: Exception in monitor thread while connecting to server localhost:27017
Z otrzymanej ślad stosu zawierającego kilka różnych wyjątków, które starałem się złapać, ale moje bloki catch jeszcze nic nie zrobił.
com.mongodb.MongoSocketOpenException: Exception opening socket
Caused by: java.net.ConnectException: Connection refused
Używam sterownika java MongoDB 3.0.4, większość posty czytałem są ze starszej API z hacki jak MongoClient.getDatabaseNames()
który rzuca MongoException
jeśli błędy, oprócz tego jest przestarzała i teraz zastąpiona MongoClient.listDatabaseNames()
który robi” t mają tę samą semantykę wyrzucania błędów.
Czy istnieje sposób, aby po prostu wykonać zapytanie mongo ze sterownika java w bloku catch catch i rzeczywiście przechwycić wyjątek?
@Alexander Kondaurov Czy możesz spojrzeć na tę odpowiedź? http://stackoverflow.com/questions/40813060/how-to-catch-exception-when-creating-mongoclient-instance/40814641#40814641. Jeśli szukasz czegoś konkretnego, dodaj do wpisu. – Veeram