我想从我创建的方法返回String类型的数据。 Eclipse说需要在try catch块之后指定一个返回类型...当我这样做时,Eclipse然后告诉我,我需要将String数据声明为Local变量......这里出了什么问题?
private String ReadData() {
try {
FileInputStream fis = null;
InputStreamReader isr = null;
String data = null;
fis = KVOContact.this.openFileInput("data.txt");
isr = new InputStreamReader(fis);
char[] inputBuffer = new char[fis.available()];
isr.read(inputBuffer);
data = new String(inputBuffer);
isr.close();
fis.close();
} catch (IOException ioe) {
Log.e("KVOContact", "IOError" + ioe);
}
return data;
}
答案 0 :(得分:8)
您在data
区块内声明try
。它超出了该区域之外的范围。
你可能只是将声明移到try
块之前 - 但我个人认为完全删除catch
块可能更有意义,并声明该方法可以抛出IOException
。您还应关闭FileInputStream
块中的InputStreamReader
和finally
,以便在抛出异常时不要将它们保持打开状态。
答案 1 :(得分:3)
data
变量仅限于try
子句的范围。将其声明在try
之外。
答案 2 :(得分:1)
您需要对代码进行一些更改:
private String ReadData() {
String data = null;
try {
FileInputStream fis = null;
InputStreamReader isr = null;
fis = KVOContact.this.openFileInput("data.txt");
isr = new InputStreamReader(fis);
char[] inputBuffer = new char[fis.available()];
isr.read(inputBuffer);
data = new String(inputBuffer);
isr.close();
fis.close();
} catch (IOException ioe) {
Log.e("KVOContact", "IOError" + ioe);
}
return data;
}
你需要声明一个不在try块内的String数据变量,因为否则它不会在try catch块之外被看到。
答案 3 :(得分:1)
是的,您还需要在catch部分中使用return
语句,研究以下代码,
private String ReadData()
{
try
{
.
.
.
return stringVariable;
}
catch ( IOException ioe )
{
Log.e("KVOContact", "IOError" + ioe);
return NULL;
}
}
答案 4 :(得分:0)
将返回数据语句放在try块本身中。
只有在try块内发生一些错误时才会调用catch,否则try会被执行并且调用将返回到它的来源。