#java #exception
#java #исключение
Вопрос:
У меня есть метод, который вставляет новые элементы в a HashMap
, я хочу ограничить размер с HashMap
помощью throw an exception
, когда размер хэш-карты больше определенного значения, скажем 100
, ниже приведена моя реализация:
public void addToHashMap(String id, Object value) throws HashMapOutOfBoundException{
hashMap.put(id,value);
}
private class HashMapOutOfBoundException extends Exception{
//what should I do inside this class?
}
Ответ №1:
Почему не простой:
public void addToHashMap(String id, Object value) {
if (hashMap.size() 1 > MAX_SIZE)
throw new HashMapOutOfBoundException();
hashMap.put(id,value);
}
с помощью
public class HashMapOutOfBoundException extends RuntimeException {}
Из javadoc:
RuntimeException и его подклассы являются непроверенными исключениями. Непроверенные исключения не нужно объявлять в предложении throws метода или конструктора, если они могут быть вызваны выполнением метода или конструктора и распространяться за пределы метода или границы конструктора.
Комментарии:
1. Итак, внутри класса HashMapOutOfBoundException я ничего не делаю? Я хочу ограничить размер HashMap внутри класса HashMapOutOfBoundException .
2. При использовании RuntimeException мне не нужно создавать класс HashMapOutOfBoundException, а просто создать новое исключение RuntimeException, верно?
3. @user3491420 Вы могли бы использовать базовое исключение RuntimeException, но это не рекомендуется. Как вы собираетесь обрабатывать конкретный случай исключения, если генерируемое исключение не является конкретным? @Nizil условие в вашем операторе if предполагает, что ограничение размера уже нарушено, я бы пошел с
(hashMap.size() 1) > MAX_SIZE
4. @user3491420 Правильно! Но трассировка стека ошибок будет менее понятной, а исключение будет менее «уловимым» 🙂 Я не понимаю, что вы подразумеваете под «ограничением размера HashMap внутри HashMapOutOfBoundException»
5. @DanTemple Спасибо 🙂