重写方法不能抛出异常

时间:2011-07-21 07:42:51

标签: java

在编译以下代码时我遇到了错误

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

}

其界面是

   /*
 * 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

3 个答案:

答案 0 :(得分:6)

您无法声明重写方法以抛出更广泛的异常。

在你的情况下异常总是比无例外

答案 1 :(得分:1)

您不能在重写方法中声明新的throws子句。界面需要了解它。或者您可以使用未经检查的例外。

答案 2 :(得分:1)

您没有包含错误,但我怀疑错误是因为您使用throw语句更改了接口方法的签名,因此根据编译器您尚未从接口实现该方法并且您正在覆盖方法那不在界面中。

实现接口时,必须完全按照接口中的方式声明函数。

/尤