异常可以抛出相同的异常吗?

时间:2014-02-07 19:39:59

标签: java exception

很抱歉,如果这可能是一个愚蠢的问题,但我正在学习Java,而且我遇到了一些异常问题。我有我的第一个项目的代码:

protected void makePurchase(int userId, Product item, int quantity) throws ItemNotBuyableException {        
    int id = item.getId();
    int count = 0;
    boolean flag = true;

    for (int i=0; i < quantity; i++) {
        try {
            catalog.sellProduct(id);
            count++;
        }
        catch (ItemNotBuyableException e) {
            flag = false;
        }
    }

    orders.addOrder(new Purchase(new GregorianCalendar(), id, item, item.getPrice(), count, userId));

    if (!flag)
        throw new ItemNotBuyableException();
}

合法吗?

2 个答案:

答案 0 :(得分:5)

是的,这是合法的。

理论上,你可以抓住它,做一些只有你的班级知道该怎么做的东西,然后把它扔给任何使用你的人。

try {
    catalog.sellProduct(id);
    count++;
}
catch (ItemNotBuyableException e) {
    doMoreStuff();
    //Better let other callers know so they can handle it appropriately
    throw e;
}

答案 1 :(得分:0)

这样更好:

protected void makePurchase(int userId, Product item, int quantity) throws ItemNotBuyableException {
    int id = item.getId();
    int count = 0;

    boolean flag = true;
    for (int i = 0; i < quantity; i++) {

        if(!catalog.sellProduct(id)) {
            flag = false;
            continue;
        }
        count++;
    }

    orders.addOrder(new Purchase(new GregorianCalendar(), id, item, item.getPrice(), count, userId));

    if (!flag)
        throw new ItemNotBuyableException();
}