в чем разница между созданием нового исключения в теле метода и созданием исключения в заголовке метода

Привет, я хотел знать, в чем разница и сходство между двумя вариантами одного и того же метода.

public string test(String value)
throw new testException();

и

public abstract String test(String value) throw new testException;

пожалуйста, простите меня, если мой синтаксис неверен.


person user5647516    schedule 21.01.2016    source источник


Ответы (2)


public abstract String test(String value) throw new testException;

не имеет смысла. Самое близкое, что вы можете сделать, это написать

public abstract String test(String value) throws testException;

что указывает на то, что test — это метод, который может выдать testException. Если testException не является RuntimeException, то оно должно быть объявлено именно так. Но добавление throws testException к сигнатуре метода говорит только о том, что метод может генерировать это исключение, но на самом деле он этого не делает.

person Louis Wasserman    schedule 21.01.2016
comment
отлично, спасибо, теперь это имеет большой смысл, я думаю, потому что это было абстрактно, это то, что бросило меня. @Луи - person user5647516; 22.01.2016
comment
@user5647516 user5647516 Тогда ты должен принять ответ Луи. - person Greg Hilston; 22.01.2016
comment
@GregHilston Я могу через 5 минут :) - person user5647516; 22.01.2016

В java каждый метод должен указывать, генерируют ли они исключения или нет, используя этот синтаксис:

public String test(String value) throws testException
{
   //your code here
   //at some point you will throw the exception like this:
   throw new testException();
}

если вы используете абстрактный метод, сигнатура метода должна содержать только выражение throws, но когда вы реализуете метод, вам нужно добавить оператор throw в тело метода.

person Pooya    schedule 21.01.2016