我有一些代码。
String id = new UserJSONModel( new JSONObject(SharedPreferenceManager.read(
SharedPreferenceManager.AUTH, "")).getJSONObject("user")).getId();
我敢肯定在“共享首选项”中存储的AUTH不会为空,因为我从中获取令牌并在注销后将其删除后将其存储。我不想对整个代码块进行try-catch,所以我将“ if null”置为,但android studio仍然希望我使用try-catch。
String auth = SharedPreferenceManager.read(SharedPreferenceManager.AUTH, "");
if (auth == null) {
} else {
UserJSONModel user = new JSONObject(auth);
String id = eser.getId();
}
答案 0 :(得分:0)
当有一种方法可能引发try/catch
时,Android studio会警告并强迫您使用exception
,因此不要试图避免try/catch
,而应考虑让您的一个用户可能会以某种方式面对null
,而不是让您的应用崩溃,而是更好地处理它以获得更好的用户体验
答案 1 :(得分:0)
简短回答。 throws
始终需要try/catch
块。这是Java的规则。
说明为什么需要它。
如果JSONException
不是正确的json格式,JSONObject将抛出auth
。空检查不会删除它,因为Android Studio无法知道auth
的格式是否有效。这就是为什么它希望您用try / catch块包围new JSONObject
。
try / catch块来自JSONObject
的{{1}}。如果您不想使用try / catch块,则可以使用其他方法来解析/字符串化json。像格森图书馆。或使用Kotlin,contructor
在Kotlin中不需要throws
。