簡體   English   中英

即使字符串null或空檢查后,Android Java異常

[英]Android Java exception even after string null or empty check

我真的不明白為什么java.lang.NumberFormatException:無效長:這里發生“空”。

問題片段如下。

try {
        userid = ((JSONObject) msg.obj).getString("userid");
        if (userid.equals("") || userid.isEmpty() || null==userid) {
                onClickLogout();
                return;
        } else {
            client.setUserid(Long.parseLong(userid));
       }
    } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            onClickLogout();
            return;
    }

行client.setUserid(Long.parseLong(userid)); 得到以下異常

java.lang.NumberFormatException: Invalid long: "null"
at java.lang.Long.invalidLong(Long.java:125)
at java.lang.Long.parse(Long.java:362)
at java.lang.Long.parseLong(Long.java:353)
at java.lang.Long.parseLong(Long.java:319)
at client.setUserid(Long.parseLong(userid));

關鍵是即使在對代碼中的用戶標識進行空值和空值檢查之后,也會發生空異常。 我這是怎么了 請檢查出專家!

字符串 (非引用)為null

if檢查各種形式的“無值”, if可以添加"null".equals(userid)來測試文字null值。

始終先檢查您的情況是否為空值

if (null==userid || userid.isEmpty() || userid.equals("null") {

然后,在條件的下一個元素中,確保userid不為null,並且不會引發NullPointerException

另外,在您的情況下,請檢查userid是否不包含“ null”字符串

而且userid.equals("")userid.isEmpty()是同一件事。

您可以使用TextUtils實用程序方法isEmpty檢查null

public static boolean isEmpty(CharSequence str) {
     return str == null || str.length() == 0;
}

isEmpty(CharSequence str)方法檢查兩個條件,是否為null和length。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM