我应该在try catch中包装getSharedPreferences吗?

问题描述 投票:0回答:3

我使用此功能从Android应用程序中提取共享首选项。但是,我不确定所请求的字段是否存在。如果字段不存在,我应该将代码包装在try catch或getString()中吗?

public String loadPreferences(String what){
    SharedPreferences settings  =this.getSharedPreferences("settings", Context.MODE_PRIVATE);
    String content =settings.getString(what, "empty");
    return content;
}
android android-sharedpreferences
3个回答
1
投票

你应该read documentation of getString here,它清楚地说,

返回首选项值(如果存在)或defValue。如果存在此名称不是String的首选项,则抛出ClassCastException。该值可以为null。

在你的情况下,defValue是“空的”

因此,只有当您尝试返回的值不是指定类型时才有可能出现异常,但它绝不应该是getString()的情况


2
投票

如果用“field”表示what所指定的值,getString()将不会在你的代码片段中返回null。它将返回what所关键的值,如果该首选项没有值,则返回"empty"


1
投票

如果您搜索此链接:https://developer.android.com/reference/android/content/SharedPreferences.html

你会发现这个方法:

getString(String key, String defValue)

这意味着如果您没有使用此密钥在SharedPreferences中启动任何内容,并且您尝试获取此密钥的值,那么它将返回默认值

所以在你的情况下

String content =settings.getString(what, "empty");

对于what密钥,如果你有这个密钥存储任何东西,如果你想要获得它的值,它将返回你的情况下的"empty"默认值

© www.soinside.com 2019 - 2024. All rights reserved.