0

我遇到了一个代码块的问题,它告诉我一个变量没有初始化,即使我在 try/catch 块中初始化了它。

我的代码是:

public String doSomething(String input1, String input2) {
    CustomizedObject myobject = new CustomizedObject();
    try {
        Output out = (Output) myobject.getOutput();
    } catch (IOException e) {
        System.err.println("Error: " + e.getMessage());
    }
    return out.doSomethingString(input1, input2);
}

但是,据说我需要创建一个局部变量“out”。

我的 CustomizedObject 的代码如下:

public class CustomizedObject {

   private String attribute;

   public CustomizedObject() {
        attribute = "awesome";
   }

   public String getOutput() throws IOException {
       //.....code doing some stuff......
       return attribute;
   }
}
4

2 回答 2

3

您无法初始化Output outtry/catch 块内部。尝试以下操作:

public String doSomething(String input1, String input2) {
    CustomizedObject myobject = new CustomizedObject();
    Output out = null;
    try {
        out = (Output) myobject.getOutput();
    } catch (IOException e) {
        System.err.println("Error: " + e.getMessage());
    }
    return out.doSomethingString(input1, input2);
}

NullPointerException请注意,如果抛出,上述代码将抛出 a IOException;所以你可能不想out.doSomethingif out == null

于 2013-03-06T01:49:27.490 回答
2

如果您的代码在 处抛出异常Output out = (Output) myobject.getOutput();,它将无法执行 return 语句。您应该将现有的移动return到 try 内部,如果 try 返回一个捕获,则有一个单独的返回。

public String doSomething(String input1, String input2) {
    CustomizedObject myobject = new CustomizedObject();
    try {
        Output out = (Output) myobject.getOutput();
        return out.doSomethingString(input1, input2);
    } catch (IOException e) {
        System.err.println("Error: " + e.getMessage());
        return "Something went wrong";
    }
}
于 2013-03-06T01:50:40.377 回答