Java - проблема метода Try / catch

1

У меня проблема с попыткой использования try/catch в моем коде. Всякий раз, когда я пытаюсь вернуть результат; я получаю сообщение об ошибке "не может разрешить результат символа". Вот мой код.

public Object remove(int index) {
    try{
        Object result = this.get(index);
        for (int k = index; k < size-1; k++) items[k] = items[k + 1];
        items[size] = null;
        size--;
        return result;
     }catch(ArrayIndexOutOfBoundsException e){
        System.out.println("Exception occurred in 'remove' method.");
        return result;
    }
}
Теги:
methods
try-catch

2 ответа

1
Лучший ответ

Вы определили переменную результата в блоке try. если вы объявите переменную в {} скобках, тогда эта переменная будет доступна для использования только в этих фигурных скобках, и она не будет доступна для внешнего мира.

Поэтому, чтобы решить проблему, вы делаете что-то вроде:

Object result = null;
try {
   ....
} catch ... {
}
return result;
0

result инициализируется внутри блока try. Блоки try/catch работают аналогично if/else, поскольку вы не можете видеть объект, инициализированный в другом блоке. Вы можете обойти это, инициализируя result перед try.

public Object remove(int index) {
  Object result;
  try{
    result = this.get(index);
    for (int k = index; k < size-1; k++) items[k] = items[k + 1];
    items[size] = null;
    size--;
    return result;
  }
  catch(ArrayIndexOutOfBoundsException e){
    System.out.println("Exception occurred in 'remove' method.");
    return result;
  }
}

Вероятно, вам не нужно было вообще исключать исключение из пределов. Исходные items - это массив, вы можете использовать items.length в своем цикле for, чтобы предварительно выходить за пределы.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню