Синтаксис для try / catch выглядит следующим образом:
try {
// statements
} catch(Exception e) {
// more statements
}
Ваш код появляется , чтобы иметь объявление конструктора
public hashMapimpl() {
table = new Entry[5];
}
там, где должны быть заявления. Это не допустимая Java. И это мало что значит для меня.
В любом случае, компилятор Java справедливо говорит вам, что синтаксис неправильный ... хотя и не объясняя, почему 1 .
Возможно, вы имеете в виду это:
public hashMapimpl() {
try {
table = new Entry[capacity];
} catch(Exception e) {
System.err.println(e.getMessage());
}
}
но это тоже плохая идея.
В: Что произойдет, если вы получите исключение?
A: Конструктор собирается напечатать сообщение об ошибке ... и затем продолжить, как будто ничего не пошло не так. И это оставит вас с null
в поле table
... которое, скорее всего, вызовет NPE чуть позже.
Правильный способ решить эту проблему - выяснить , почему вы получаете исключение ArrayIndexOutOfBounds
, и исправить причину исключения.
Подсказка: каково фактическое значение capacity
при создании массива ??
1 - К сожалению, компилятор может выдать осмысленное сообщение об ошибке только в том случае, если он понимает, что вы подразумевали под этим . Компиляторы обычно не могут понять, что вы (вероятно) имеете в виду, если синтаксис слишком испорчен.