我创建了一个帐户类,其中包含一个提取资金的方法。如果撤回太多资金,就会抛出异常。
我需要对透支帐户进行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();
}
答案 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消息。