这个异常类做了什么?

时间:2016-03-10 03:36:34

标签: java

我创建了一个帐户类,其中包含一个提取资金的方法。如果撤回太多资金,就会抛出异常。

我需要对透支帐户进行JUnit测试,但我认为我在创建它时遇到了麻烦,因为我不理解我提供的示例异常类。

我得到了这段代码。它做什么/返回?

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    Bundle args = getArguments();
    if (args.containsKey(ARG_MESSAGE_INT)) {
        builder.setMessage(args.getInt(ARG_MESSAGE_INT));
    } else if (args.containsKey(ARG_MESSAGE_STRING)) {
        builder.setMessage(args.getString(ARG_MESSAGE_STRING));
    }
    if (args.containsKey(ARG_TITLE_INT)) {
        builder.setTitle(args.getInt(ARG_TITLE_INT));
    } else if (args.containsKey(ARG_TITLE_STRING)) {
        builder.setTitle(args.getString(ARG_TITLE_STRING));
    }

     builder
            .setPositiveButton(R.string.alert_dialog_ok,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            if (null != buttonOnClickListener)
                                buttonOnClickListener.onPositiveClick();
                        }
                    }
            )
            .setNegativeButton(R.string.alert_dialog_cancel,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            if (null != buttonOnClickListener)
                                buttonOnClickListener.onNegativeClick();
                        }
                    }
            );

    return builder.create();
}

4 个答案:

答案 0 :(得分:4)

此类的类型为Exception,它被称为InsufficientFundsException。这可能会在用户尝试通过调用抛出InsufficientFundsException的方法进行购买的情况下使用。如果用户没有足够的钱,该方法将抛出InsufficientFundsException。例如

public void purchase(Item i, double balance) throws InsufficientFunds Exception {
    //more codes here if we have enough money

    if (balance < i.getCost()) {
        throw new InsufficientFundsException(i.getCost() - balance); //throw an exception! we don't have enough money
    }
}

答案 1 :(得分:2)

如果帐户没有足够的资金,

InsufficientFundsException是必须由withdraw方法引发的例外。

public class Account {

    ...

    public void withdraw(double amount) throws InsufficientFundsException {
        if (amount > this.funds) {
            throw new InsufficientFundsException("put a cool message here", amount);
        }
        ...
    }

    ...
}

您可以通过这种方式测试这种特殊情况:

@Rule
public ExpectedException thrown = ExpectedException.none();

@Test
public void testWithdraw_InsufficientFunds() throws InsufficientFundsException {
    Account account = new Account(1500); // assuming that 1500 is current account fund
    thrown.expect(InsufficientFundsException.class);
    account.withdraw(2000);
}

答案 2 :(得分:0)

异常是在程序执行期间发生的事件,它会破坏程序指令的正常流程。

这里InsufficientFundsException是Exception的特殊形式。

例如,如果我们说我们希望用户将提款限制在100以上。我们可以使用以下代码:

public int withdraw(double amount, int accountId , double balance) throws InsufficientFundsException  {

   if(amount>balance)
    throw new InsufficientFundsException (amount); 

    // withdrawl logic goes here

}

答案 3 :(得分:0)

它是一个可以用来抛出异常的类。初始化该类时,我们可以设置该对象的数量。执行throw new InsufficientFundsException(needs);时,异常删除并使用InsufficientFundsException消息。