我有以下代码:
static Connection getConnection() {
String datasourceContext = "jdbc/infy";
Connection connection = null;
try {
Context initialContext = new InitialContext();
DataSource datasource = (DataSource) initialContext
.lookup(datasourceContext);
if (datasource != null) {
connection = datasource.getConnection();
connection.setAutoCommit(false);
} else {
System.out.println("Failed to lookup datasource");
}
} catch (NamingException e) {
System.out.println("Failed to get context " + e);
} catch (SQLException e) {
System.out.println("Failed to get connection " + e);
}
return connection;
}
我正在尝试制作整洁且可测试的代码,我的问题是:如何在数据源为null或/和连接为空时正确处理大小写,而不使用条件语句。我认为最好的办法是抛出异常,但是什么样的异常? 谢谢。
答案 0 :(得分:1)
如果找不到数据源,JNDI查找会抛出NameNotFoundException。 AFAIK它永远不应该返回null,所以我没有看到null检查中的点。
你可以调整关于NamingException的错误消息,因为它目前是误导性的,NameNotFoundException也是一个NamingException - 尽管你真正应该做的只是重新抛出你得到的异常。我只是将其更改为未经检查的异常而不是检查,如
catch (NamingException e) {
throw new IllegalStateException("Failed with JNDI lookup of "
+ datasourceContext, e);
}
与SQLException类似。