try/catch 后的 Java 返回类型

标签 java android return try-catch

我想从我创建的方法返回 String 类型的数据。 Eclipse 说需要在 try catch block 之后指定一个返回类型...当我这样做时,Eclipse 然后告诉我需要将 String 数据声明为局部变量...这里出了什么问题?

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

最佳答案

您在 try block 中声明 data。它超出了该 block 之外的范围。

可以只需将声明移动到try block 之前 - 但我个人认为删除catch可能更有意义完全阻塞,并声明该方法可以抛出IOException。您还应该关闭 finally block 中的 FileInputStreamInputStreamReader,这样在抛出异常时就不会让它们保持打开状态。

关于try/catch 后的 Java 返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10977569/

相关文章:

c# - 函数返回路径

rust - `return` 语句不应该返回 `!`(从不输入)吗?

java - 如何在 Eclipse 中组织导入而不是*更改*星号导入

java 枚举与数组属性

java - 树结构的正则表达式?

java - 按钮 onclicklistener 中的 Android 微调器

java - 网络操作导致 android.os.NetworkOnMainThreadException

Android使用路径中的空间和通用图像加载器加载本地镜像

android - NativeScript - 静态 XML/JS/CSS 是否可以在可分发的设备特定文件中加密

java - 递归方法返回星号中的值