2017-07-17 82 views
2

我正在開發作爲課程一部分的應用程序的簡單登錄/註冊表單。 我使用ParseUser註冊用戶,並在記錄他們。在ParseException中打印異常的信息

當用戶輸入一個已經存在,舉杯顯示用戶名...

ParseUser user = new ParseUser(); 
    user.setUsername(username); 
    user.setPassword(password); 

    user.signUpInBackground(new SignUpCallback() { 
     @Override 
     public void done(ParseException e) { 

      if (e == null) { 

       Toast.makeText(MainActivity.this, "Sign up successful!", Toast.LENGTH_SHORT).show(); 

      } else { 

       Log.i("Sign up", "failed. Reason - " + e.toString()); 
       Toast.makeText(MainActivity.this, "Sign up failed. " + e.getMessage(), Toast.LENGTH_SHORT).show(); 

      } 
     } 
    }); 

...與錯誤信息從e.getMessage(),例如,「註冊失敗。帳戶已存在此用戶名。」

然而,如果用戶不輸入任何內容,即離開無論是PW或用戶名字段爲空,I get this in the app

,並在日誌中的以下內容:I/Sign up: failed. Reason - com.parse.ParseException: java.lang.IllegalArgumentException: Username cannot be missing or blank

我想看到的僅僅是爲錯誤消息Username cannot be missing or blank,這是第二個異常的「.getMessage()」java.lang.IllegalArgumentException

我該怎麼做呢?謝謝!

回答

1

有我在這裏看到兩個主要選項:

  1. 獲取使用getCause()的原因,並呼籲getMessage()上的原因,而不是從頂層例外本身。
  2. 通過獲取「Exception」子字符串的最後一個實例手動格式化字符串,並丟棄之前(和包括)的所有內容;這應該可以作爲最後的選擇,因爲它增加了複雜性並降低了可讀性。
+0

謝謝!這對我有效。 :) 什麼時候會使用第二個選項? – Akres

+0

當第一個選項不適合您的情況或導致比解決問題更多的問題時。 :P –

+0

噢,那好吧。再次感謝,奧斯汀! – Akres