gpt4 book ai didi

mongodb-java - java mongodb 驱动程序如何捕获异常?

转载 作者:行者123 更新时间:2023-12-04 02:29:21 27 4
gpt4 key购买 nike

我希望能够检测到 mongo 服务器是否可以从 java 驱动程序获得,以便像在 JDBC 领域等那样对任何异常事件使用react。当服务器启动时一切正常,但我很难理解为什么检测错误是如此困难。我有一种感觉,因为 mongo 客户端在不同的线程中运行并且它不会重新扔给我什么的?

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.
}

结果是
INFO: Exception in monitor thread while connecting to server localhost:27017

结果堆栈跟踪包含一些我试图捕获的不同异常,但我的 catch 块仍然没有做任何事情。
com.mongodb.MongoSocketOpenException: Exception opening socket
Caused by: java.net.ConnectException: Connection refused

我正在使用 java mongodb 驱动程序 3.0.4,我阅读的大多数帖子都来自较旧的 API,其中包含类似 MongoClient.getDatabaseNames() 的黑客攻击抛出 MongoException如果出现错误,除了现在已弃用并替换为 MongoClient.listDatabaseNames()它没有相同的错误抛出语义。

有没有办法在 try catch 块中从 java 驱动程序执行 mongo 查询并实际捕获异常?

最佳答案

在新 API 中,MongoExceptionRuntimeException.您可以捕获通用 MongoException或者,我相信,listDatabaseNames()最终会抛出 MongoCommandException最终。

关于mongodb-java - java mongodb 驱动程序如何捕获异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34564466/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com