Android 我应该将GetSharedReferences封装在try-catch中吗?
我使用此函数从Android应用程序中提取共享首选项。但是,我不确定请求的字段是否存在。我是否应该将代码包装在try catch中,或者当字段不存在时,Android 我应该将GetSharedReferences封装在try-catch中吗?,android,android-sharedpreferences,Android,Android Sharedpreferences,我使用此函数从Android应用程序中提取共享首选项。但是,我不确定请求的字段是否存在。我是否应该将代码包装在try catch中,或者当字段不存在时,getString()是安全的 public String loadPreferences(String what){ SharedPreferences settings =this.getSharedPreferences("settings", Context.MODE_PRIVATE); String content =
getString()
是安全的
public String loadPreferences(String what){
SharedPreferences settings =this.getSharedPreferences("settings", Context.MODE_PRIVATE);
String content =settings.getString(what, "empty");
return content;
}
如果“field”是指由what
键入的值,getString()
将不会在代码段中返回null
。它将返回由what
所键入的值,或者如果该首选项没有值,则返回“empty”
。如果是“field”,则表示由what所键入的值,getString()
将不会在代码段中返回null
。它将返回由what
输入的值,或者如果该首选项没有值,则返回“空”
。您应该,它清楚地说
返回首选项值(如果存在),或返回defValue。投掷
ClassCastException,如果此名称的首选项不是
一串。此值可能为空
在您的情况下,defValue是“空的”
所以,只有当您试图返回的值不是指定类型时,异常才可能发生,它不应该是getString()
的情况,尽管它清楚地指出,您应该这样做
返回首选项值(如果存在),或返回defValue。投掷
ClassCastException,如果此名称的首选项不是
一串。此值可能为空
在您的情况下,defValue是“空的”
因此,只有当您尝试返回的值不是指定类型时,才可能出现异常。如果您通过以下链接进行搜索,则绝不会出现
getString()
的情况:
您将发现此方法:
getString(String key, String defValue)
这意味着,如果您没有使用此键在SharedReferences中存储任何内容,并且尝试获取此键的值,则它将返回默认值
那么你的情况呢
String content =settings.getString(what, "empty");
对于
什么
键,如果您没有使用此键存储任何内容,并且尝试获取其值,则如果您通过此链接搜索,它将返回默认值,即“空”
您将发现此方法:
getString(String key, String defValue)
这意味着,如果您没有使用此键在SharedReferences中存储任何内容,并且尝试获取此键的值,则它将返回默认值
那么你的情况呢
String content =settings.getString(what, "empty");
对于
什么
键,如果您没有使用此键存储任何内容,并且尝试获取其值,则它将返回默认值,即“空”
,在您的情况下是“无值”等于“不存在”?@AliSheikhpour:Yes。“无值”等于“不存在”@AliSheikhpour:Yes。