我有一个功能来验证购物车中是否存在商品。我当前的代码以这种方式工作,如果代码返回异常,则意味着购物车中不存在该项。
问题在于,如果当前代码返回任何类型的异常,我将其作为项目不在列表中。
如果项目不在购物车中,我如何更改代码?
Criteria cre = session.createCriteria(Cart.class, "cart")
.createAlias("cart.items", "items")
.createAlias("items.pro", "pro");
cre.add(Restrictions.eq("cart.id", cartId));
cre.add(Restrictions.eq("pro.id", proId));
Cart cart = (Cart) cre.list().get(0);
if (!tx.wasCommitted()) {
tx.commit();
}
if (session.isOpen()) {
session.close();
}
if (cart.getItems().size() >= 1) {
System.err.println("Item is in the cart");
return 1;
}
} catch (Exception e) {
System.err.println("either item is not in the cart or an exception was thrown");
return 2;
}
答案 0 :(得分:1)
Criteria cre = session.createCriteria(Cart.class, "cart")
.createAlias("cart.items", "items")
.createAlias("items.pro", "pro");
cre.add(Restrictions.eq("cart.id", cartId));
cre.add(Restrictions.eq("pro.id", proId));
List<Cart> carts = cre.list();
if (carts.size() == 0)
return 2; //ItemReteieveStatus.NOT_FOUND;
Cart cart = carts.get(0);
if (!tx.wasCommitted()) {
tx.commit();
}
if (session.isOpen()) {
session.close();
}
if (cart.getItems().size() >= 1) {
System.err.println("Item is in the cart");
return 1;//ItemReteieveStatus.FOUND;
}
return 2;//ItemReteieveStatus.NOT_FOUND
} catch (Exception e) {
System.err.println("either item is not in the cart or an exception was thrown");
return 3;//ItemReteieveStatus.ERROR;
}
返回整数并不是一个好习惯。你最好添加一个枚举,如:
public enum ItemReteieveStatus {
FOUND, NOT_FOUNT, ERROR;
}