源自:8-5 获取所有商品资料方法的实现
为什么return写在这个位置会报错,写在finally语句后面就没问题呢?
package com.DAO;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import com.utilty.DBHelper;
import entity.Items;
public class ItemsDao {
public ArrayList<Items> getAllItems() {
PreparedStatement ptmt = null;
ResultSet rs = null;
Connection conn = null;
ArrayList<Items> itemList = new ArrayList<Items>();// 商品集合
try {
conn = DBHelper.getConnection();
String sql = "select * from items;";// sql语句
ptmt = conn.prepareStatement(sql);
rs = ptmt.executeQuery();
while (rs.next()) {
Items item = new Items();
item.setId(rs.getInt("id"));
item.setName(rs.getString("name"));
item.setCity(rs.getString("city"));
item.setPrice(rs.getInt("price"));
item.setNumber(rs.getInt("number"));
item.setPicture(rs.getString("picture"));
itemList.add(item);// 把一个商品加入到集合中
}
return itemList;
}
catch (Exception ex) {
ex.printStackTrace();
} finally {
if (rs != null) {
try {
rs.close();
rs = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ptmt != null) {
try {
ptmt.close();
ptmt = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
}
// 返回商品集合
}
}
提问者:一只土豆
2015-12-24 22:28
个回答
-
因为可能在执行try里面的语句时可能出错,如果出错了就没有返回值了,就会出现错误。
而放在finally后面不过try里面是否出错,这里面的语句都会执行。
-
不可以。有漏洞不严谨。nbsp;先判断if条件,然后直接走else的结果了,也就是说无论你的else写的什么返回结果都会执行。符合条件就做什么没有就做什么,else没有条件