JDBCの土地などで異常なイベントに反応する目的で、javaドライバからmongoサーバが利用できるかどうかを検出できるようにしたいのですが、サーバが稼働していてもうまく動作しますが、苦労しています。なぜエラーを検出するのが難しいのかを理解する。 mongoクライアントが別のスレッドで実行され、それが私に何かを投げかけないので、私はその気持ちを持っていますか?java mongodb driverどのように例外をキャッチしますか?
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.
}
結果は私がキャッチしようとしたが、私のcatchブロックは、まだ何もしなかったいくつかの異なる例外を含有する得られたスタックトレースを
INFO: Exception in monitor thread while connecting to server localhost:27017
です。
com.mongodb.MongoSocketOpenException: Exception opening socket
Caused by: java.net.ConnectException: Connection refused
私は、JavaのMongoDBドライバ3.0.4を使用しています、私は読んでほとんどの記事は「doesnのエラーならば、これは廃止とMongoClient.listDatabaseNames()
に置き換えることを除いて、MongoException
をスローMongoClient.getDatabaseNames()
のようなハックと古いAPIからですセマンティクスを投げているのと同じエラーがあります。
try catchブロックのjavaドライバからmongoクエリを実行するだけの方法がありますが、実際にはcatchされた例外がありますか?新しいAPIでは
@Alexander Kondaurovこの回答を見ることができますか? http://stackoverflow.com/questions/40813060/how-to-catch-exception-when-creating-mongoclient-instance/40814641#40814641特定のものを探しているなら、投稿に追加してください。 – Veeram