我有一个ServerSocket等待接受连接。在另一个线程上收到某个事件后,我关闭套接字,使其不再等待连接。我收到带有“ Socket closed ”消息的 java.net.SocketException 。问题是,如何识别“Socket closed”异常。我可以使用异常消息来执行此操作,但我觉得这不是我应该如何处理异常。
我查了一下文档: https://docs.oracle.com/javase/9/docs/api/java/net/SocketException.html
SocketException类有许多子类,但我找不到任何引用“Socket closed”的东西。是否可以使用异常消息来识别它?这条消息可能会改变,也许是在另一个平台上或其他什么地方?
以下是一些代码:
static void jdbcTemplateExample() {
DataSource ds = DataSourceBuilder
.create()
.username(username)
.password(password)
.url(url)
.build();
JdbcTemplate jt = new JdbcTemplate(ds);
List<Object> results = jt.query("SELECT * FROM table", (ResultSet rs, int rowNum) -> {
//Create whatever Object you want with the resultSet.
//Will convert to Map as example.
Map results = new HashMap<>();
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();
for (int i = 1; i <= columns; ++i) {
results.put(md.getColumnName(i), rs.getObject(i));
}
return results;
});
//use the results
}
答案 0 :(得分:0)
更好的方法是: