2011-07-21 15 views
1

私はエラーにオーバーライドされたメソッドカントスロー例外

@Override 
public void routeCustomerRequest (int choice) throws UnSupportedCustomerRequestException{ 
    //throw new UnsupportedOperationException("Not supported yet."); 

    switch(choice) 
    { 
     case '1': 
      System.out.println("1. Add a new Customer"); 
      break; 
     default : 
      throw UnSupportedCustomerRequestException("hehehe"); 
    } 
} 

    // its constructor class is 

public class UnSupportedCustomerRequestException extends Exception { 
public UnSupportedCustomerRequestException(String bong){ 
    System.out.println(bong); 
} 

}

そのインターフェースはあなたがオーバーライドするメソッドで新しいthrows句を宣言することはできません

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package bankingappication; 

/** 
* 
* @author Training 
*/ 
public interface IBankingServices { 
    public static String bankerResgistrationCode=null; 

    public void enquireCustomer(); 
    public int presentServiceMenu(); 
    public void routeCustomerRequest(int choice); 

    public boolean acceptDeposit(); 

    public boolean acceptCheque(); 
    public boolean processCheque(); 

    //customer name can be full or partial. 
    public boolean provideSummaryStatement(String customerName); 

    public boolean addCustomer(); 
    public boolean removeCustomer(); 
    public boolean updateCustomer(); 
} 

//please debug the error 

答えて

6

あなたは広い例外をスローするためにオーバーライドされたメソッドを宣言することはできません。私はプログラムを編集した

あなたのケースでは例外は常に例外なく

+0

よりも広いですが、あなたはこの問題は、はいそれが必要 – hemanth

+0

持続すると思います。私の答えを読んでください –

1

あるを持っている次のコードをコンパイルしながら、 。インタフェースはそれを知る必要があります。または、チェックされていない例外を使用することもできます。

1

エラーは含まれていませんが、インターフェイスからメソッドを実装していないコンパイラに合わせて、throwメソッドを使用してインターフェイスメソッドのシグネチャを変更して、メソッドを呼び出します。

インターフェイスを実装するときは、インターフェイス内の関数と同じように関数を宣言する必要があります。

/ヴィクトル

関連する問題