我和同事就以下代码进行了半争论。我坚持以下代码将返回true(如果成功)或错误。他认为该函数仍然有可能返回false。我不知道如何。
但是,我前世是错的。
那么,代码是否有可能返回false?如果可以,怎么办?
public static boolean saveBRL(BookingReleaseItem bri) throws ClassNotFoundException, SQLException {
//get connection to mysql database
Connection conn = getConnection();
//get count of existing items for julian date
int count = getBRICount(conn, bri.getJulian());
String query = "INSERT INTO BookingRL "
+ "(julian\n"
+ "serial\n"
+ "name\n"
+ "sid\n"
+ "type\n"
+ "frontDesk\n"
+ "atrReceivedTime\n"
+ "releasing\n"
+ "releaseTime) VALUES (?,?,?,?,?,?,?,?,?)";
PreparedStatement ps = conn.prepareStatement(query);
ps.setString(1, bri.getJulian());
ps.setInt(2, ++count);
ps.setString(3, bri.getName());
ps.setString(4, bri.getSid());
ps.setString(5, bri.getType());
ps.setString(6, bri.getFrontDesk());
ps.setString(7, bri.getAtrReceivedTime());
ps.setString(8, bri.getReleasing());
ps.setString(9, bri.getReleaseTime());
ps.executeUpdate();
ps.close();
conn.close();
return true;
}
答案 0 :(得分:3)
首先,如果您不打算在相应的情况下返回两个值(真/假),则使用布尔函数是一个非常糟糕的做法(但我想这不是您的问题): ))。
其次,由于您的函数不使用第二个可能返回错误值的return语句,因此您的同事是错误的。
答案 1 :(得分:1)
我只是在猜测,您在这里谈论的是另一种代码风格。您的代码无法以任何方式返回false
。唯一的可能性(这就是我猜测的可能性)是如果不抛出异常而是将其陷入您提供的方法中。
然后,如果发生异常,您可能返回false
。那将是一种不同的编码方式,我会坚持在您的代码库中更常见的方式。如果您工作的其他公司都发现了例外情况,那么您也应该这样做。