Java - Try/catch 方法问题

Java - Try/catch method issue

我在尝试在我的代码中使用 try/catch 时遇到问题。每当我尝试 return 结果时;我收到错误 "cannot resolve symbol 'result'"。这是我的代码。

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

您已在 try 块中定义了结果变量。如果您在 {} 大括号内声明变量,那么该变量将只能在这些大括号内使用,并且不会对外界可用。

因此,要解决此问题,您可以执行以下操作:

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

result 在 try 块中初始化。 try/catch 块的工作方式与 if/else 类似,因为您看不到在另一个块中初始化的对象。您可以通过在 try.

之前初始化 result 来解决这个问题
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 是一个数组,您可以在 for 循环中使用 items.length 来防止越界。