当我确定ther不会为null时,如何避免在Android Studio中尝试捕获?

时间:2019-06-08 19:42:28

标签: android

我有一些代码。

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

2 个答案:

答案 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