为了账号安全,请及时绑定邮箱和手机立即绑定

为什么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();
				}
			}
		}
		// 返回商品集合
	}
}

567c00e10001e83905000108.jpg

567c00e100013ce905000043.jpg


正在回答

2 回答

因为可能在执行try里面的语句时可能出错,如果出错了就没有返回值了,就会出现错误。

而放在finally后面不过try里面是否出错,这里面的语句都会执行。


0 回复 有任何疑惑可以回复我~
#1

一只土豆 提问者

非常感谢!
2015-12-25 回复 有任何疑惑可以回复我~

不可以。有漏洞不严谨。nbsp;先判断if条件,然后直接走else的结果了,也就是说无论你的else写的什么返回结果都会执行。else

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么return写在这个位置会报错,写在finally语句后面就没问题呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信