java - 当初始化发生在 try/catch 中时,Eclipse 给出未初始化的编译时错误

标签 java initialization try-catch ioexception

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

我的代码是:

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

最佳答案

您无法在 try/catch block 内初始化Output out。请尝试以下操作:

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

注意,如果抛出IOException,上面的代码将会抛出NullPointerException;因此,如果 out == null,您可能不想 out.doSomething

关于java - 当初始化发生在 try/catch 中时,Eclipse 给出未初始化的编译时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15237516/

相关文章:

java - 如何使用 RedisTemplate 访问由 spring redis session 存储的散列 key ?

java - 架构 "DB"不存在

c++ - 为什么允许在类外部指定默认值,但不允许在类内部指定默认值?

javascript:重试直到 promise 解决然后执行

java - 从文件加载的字符串中删除转义字符

java - 如何创建可以使用注释 Autowiring 的 spring bean?

C++ boolean 数组初始化

C++ STL vector 初始化

sql-server-2005 - 在try…catch中告诉SQL Server错误是 “handled”

performance - 在 julia 中 try catch 或类型转换性能 -(Julia 73 秒,Python 0.5 秒)