【问题标题】:Why SharedPreferences not throw Exceptions?为什么 SharedPreferences 不抛出异常?
【发布时间】:2019-10-14 10:37:39
【问题描述】:

android 中的共享首选项使用 XML 文件来读取/写入数据,那么如果我们使用 File 而不是 SharedPreferences,为什么它们不会抛出异常。

从文件中读取数据的示例代码。我们必须捕获异常。

 private void readFile(Context context){
    FileInputStream fis;
    try {
        fis= context.openFileInput("FileName"); // open file for reading
        fis.read(); 
    } catch (FileNotFoundException e){

    } catch (IOException e){

    }
}

从 SharedPreferences 读取数据的示例代码。无需捕获异常。

 private void readSharedPreference(Context context) {
    SharedPreferences settings = context.getSharedPreferences("FileName", Context.MODE_PRIVATE);
    String testRead = settings.getString("sample", "");
    // above statement does not throw IOException.(however it reads from file).
}

【问题讨论】:

  • 您使用了哪种类型的文件而不是 SharedPreferences?
  • 如果我们使用 FileOutputStream,如果该名称的文件不存在,它会抛出 FileNotFound 异常。然后,如果我们将数据写入文件,则会抛出 IOException
  • 共享偏好与您的问题有何关联?请提供您遇到的错误代码
  • 我没有收到任何错误,我只是好奇共享首选项如何管理异常(因为它们在后台使用文件)

标签: android xml file sharedpreferences


【解决方案1】:

嗯,SharedPreferences 实际上可以抛出一个 IOException,但他们为什么要让代码一直发生这种情况呢? 如果您想知道幕后的内容,只需查看源代码:SharedPreferences.JavaContextImpl.java .

【讨论】:

  • 好的,如果他们真的可以抛出 IOException,那么请告诉场景什么时候抛出。
  • 嗯,这与任何其他 IOException 没有什么不同。最简单的尝试是使文件系统没有剩余空间,然后尝试编写新的设置文件。您可以尝试的其他选项包括修改 android 操作系统,或损坏手机的存储控制器。
猜你喜欢
  • 2010-12-09
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 2014-07-09
  • 2017-07-03
  • 1970-01-01
  • 2011-01-04
  • 1970-01-01
相关资源
最近更新 更多