Зависит от того, что вы хотите сделать.
Если контракт вашего метода не может быть выполнен в случае исключения (т.е. вы не можете вернуть значение, которое вы намеревалисьнапример) бросить новое исключение.(Тем не менее, обратите внимание, что просто перебрасывание нового исключения не имеет большого смысла. Просто объявите метод как throws NoSuchELementException
и позвольте распространению исключения.)
Если ваш контракт может быть выполнен вв случае исключения (т. е. вы можете вернуть null
, если элемент не найден), тогда вы должны отловить исключение (зарегистрируйте его, используя System.err.println
, если хотите), а затем продолжить выполнение.
Aпримечание к первому варианту создания нового исключения:
Вы всегда должны выбрасывать исключение, которое соответствует текущему уровню абстракции .Если, например, метод называется getUserFromList(...)
и вы столкнулись с NoSuchElementException
из-за какой-либо проблемы, связанной с коллекцией, вы должны перехватить исключение и выбросить NoSuchUserException
.
, чтобы выделить разницу:
try {
currentUser=(String) userList.nextElement();
currentPass=(String) credentials.get(currentUser);
} catch(NoSuchElementException nsee) {
^^^^^^^
System.err.println("Is properties file blank?");
throw new NoSuchUserException("Is properties file blank?");
^^^^
}