[英]Eclipse giving uninitialized compile time error when initialization occurs inside try/catch
我遇到了一段代碼,該代碼告訴我即使在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;
}
}
您不能在try / catch塊中初始化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
否則,將拋出NullPointerException
。 所以你可能不想out.doSomething
如果out == null
。
如果您的代碼在Output out = (Output) myobject.getOutput();
處引發異常Output out = (Output) myobject.getOutput();
,它將無法執行return語句。 您應該將現有的return
移至嘗試的內部,如果嘗試返回捕獲,則應單獨獲得退貨。
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";
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.