2013-05-02 3 views
3

Я изучаю какое-то исключение, которое бросает один метод. Метод выглядит следующим образом:Метод Java Signature Throws Exception, реализация не

public void someMethod() throws someCheckedException{ 

    //doSomething statements 
    //but no statements actually throws 'someCheckedException' 

} 

Мой вопрос заключается в том, что это можно сделать этот метод бросить «someCheckedException» в то время как реализация не имеет перекидной заявление на всех.

Неправильно ли поставить исключение throw в подпись без реализации заявления, исключающего исключения?

+1

Это законно. «правые» или «неправильные» субъективны. –

+0

Нет, это не так, но почему вы добавляете предложение бросков без необходимости использовать его? – Azad

+0

@AzadOmer Для этого есть много поводов. RMI - один из примеров. – EJP

ответ

4

Это совершенно нормально. Оператор throw в методе-методе существует там, где метод генерирует фактическое исключение, указанное в инструкции throws, и обычно передает обработку другому классу . Вам просто нужно запомнить, чтобы этот метод был включен в try catch, когда вы хотите его использовать.

1

Исключение, вероятно, вызывается одним из методов, называемых someMethod.

например.

void method1() throws Exception { 
     method2(); 
    } 

    void method2() { 
     throw new Exception(); 
    } 
1

Это законно. Это очень часто делается в RMI. Методы в удаленном интерфейсе должны быть объявлены для throw RemoteException, но методы реализации не должны объявлять об этом, так как они фактически не бросают его (если только они не делают собственные вызовы RMI). Удаленные исключения выбрасываются самим RMI. Однако они часто заявляются для этого, чтобы согласиться с удаленным интерфейсом. Это необязательно.