2015-02-17 175 views
1

我在創建自己的異常類時遇到了一個相當微不足道的問題。我已經擴展它,並試圖在構造函數中接受一個double,但我不斷收到錯誤。Java自定義異常類

的BankAccount @withdraw內部錯誤 「不兼容的類型:InsufficientFundsException不能轉換到拋出」

Exception類:

public class InsufficientFundsException extends RuntimeException { 

    private double shortFall; 

    public InsufficientFundsException(double a) { 
     super("Insufficient funds"); 
     shortFall = a; 
    } 

    public double getAmount() { return shortFall; } 

} 

銀行戶口類:

public class BankAccount { 

    private int accountNumber; 
    private double balance; 

    // Class constructor 
    public BankAccount(int account) { 
     accountNumber = account; 
     balance = 0.0; 
    } 

    public int getAccountNumber() { 

     return accountNumber; 
    } 

    public double getBalance() 
    { 
     return balance; 
    } 

    public void deposit(double b) { 
     balance += b; 
    } 

    public void withdraw(double w) throws InsufficientFundsException { 

     double difference; 
     if(w > balance) { 
      difference = w - balance;   
     } else { 
      balance -= w; 
     } 
    } 

我想除非提款超過目前的餘額,否則取款。在這種情況下,我想拋出一個異常。我也嘗試拋出和例外,但如果我得到:

構造函數InsufficientFundsException類InsufficientFundsException不能應用於gived類型; 要求:無參數 發現:雙 原因:實際的和正式的參數列表長度

public void withdraw(double w) { 

     double difference; 
     if(w > balance) { 
      difference = w - balance; 
      Exception ex = new InsufficientFundsException(difference); 
     } else { 
      balance -= w; 
     } 
    } 

不同我只有一個構造函數,雖然。任何意見或幫助表示讚賞。

+0

你有所謂的多個類'InsufficientFundsException '? – immibis 2015-02-17 23:48:19

+0

你應該拋出你創建的新異常。 – rgettman 2015-02-17 23:49:08

回答

0

您是否嘗試過...

throw new InsufficientFundsException(difference); 

代替

Exception ex = new InsufficientFundsException(difference); 

這通常是異常的引發。

更新程式碼...

public void withdraw(double w) throws InsufficientFundsException { 

    double difference; 
    if(w > balance) { 
     difference = w - balance;  
     throw new InsufficientFundsException(difference); 
    } else { 
     balance -= w; 
    } 
} 

跑了......

public static void main(String[] args){ 
    BankAccount account = new BankAccount(1); 
    account.withdraw(5.0); 
} 

了....

Exception in thread "main" com.misc.help.InsufficientFundsException:  Insufficient funds 
at com.misc.help.BankAccount.withdraw(BankAccount.java:32) 
at com.misc.help.BankAccount.main(BankAccount.java:40) 
+0

我有但我只是再次嘗試驗證我得到「構造函數InsufficientFundsException在類InsufficientFundsException不能應用於給定的類型」 – eip56 2015-02-18 00:20:47

+0

剛剛添加我的代碼更改。我得到了預期的例外。 – shirrine 2015-02-18 00:33:34

+0

謝謝你的皰疹,但我仍然有一個問題。我想也許我宣佈實際的異常類錯了?目前在方法簽名中的錯誤是不兼容的類型:InsufficientFundsException不能轉換爲Throwable。 – eip56 2015-02-18 00:39:46