2015-03-28 3 views
1

У меня проблема с попыткой использования try/catch в моем коде. Всякий раз, когда я пытаюсь вернуть результат; я получаю сообщение об ошибке «не может разрешить результат символа». Вот мой код.Java - проблема метода 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; 
    } 
} 

ответ

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; 
    } 
} 

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

Смежные вопросы