2016-03-10 3 views
1

Я создал класс учетной записи, в котором есть метод для извлечения денег. Если слишком много денег изымается, это исключает.Что делает этот класс исключений?

Мне нужно сделать тест JUnit для переполненной учетной записи, но я думаю, что у меня возникли проблемы с ее созданием, потому что я не понимаю примерный класс исключений, который мне предоставили.

Мне был дан этот код. Что он делает/возвращается?

public class InsufficientFundsException extends Exception { 

    private double amount; 

    public InsufficientFundsException(double amount) 
     { 
      this.amount = amount; 
     } 
     public double getoverdrawn() 
     { 
      return amount; 
     } 
    } 
+2

Это ничего не делает. Это просто класс. – SLaks

+0

https://docs.oracle.com/javase/tutorial/essential/exceptions/definition.html – Radiodef

ответ

4

Этот класс относится к типу Exception и называется InsceptionFundsException. Это, вероятно, будет использоваться в случае, когда пользователь пытается совершить покупку, вызвав метод, который генерирует исключение 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 
    } 
} 
0

Исключение - это событие, которое происходит во время выполнения программы, что нарушает нормальный поток инструкций программы.

Здесь InsfectFundsException является особой формой исключения.

, например, если мы говорим, что мы хотим, чтобы пользователь ограничить вывод ДО 100. Мы можем использовать ниже код:

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

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

    // withdrawl logic goes here 

} 
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); 
} 
0

Это класс, который можно использовать, чтобы бросить исключение. при инициализации этого класса мы можем установить сумму для этого объекта. Когда выполняется throw new InsufficientFundsException(needs);, исключение происходит и с сообщением InsfectFundsException.