在ParseException中打印异常消息

时间:2017-07-17 11:19:50

标签: java android

我有一个简单的登录/注册表单,用于我正在开发的应用程序作为课程的一部分。 我正在使用ParseUser来注册用户并将其登录。

当用户输入已存在的用户名时,会显示Toast ...

@Test
public void my_controller_test() throws Exception {
   mockMvc.perform(post("/create-user").principal(new MockPrincipal())
          .andExpect(status().isCreated());
}

...来自 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(); } } }); 的错误消息,例如“注册失败。此用户名已存在帐户。”

但是,如果用户没有输入任何内容,即将pw或用户名字段留空,I get this in the app

以及日志中的以下内容:e.getMessage()

我想看到的只是错误消息I/Sign up: failed. Reason - com.parse.ParseException: java.lang.IllegalArgumentException: Username cannot be missing or blank,它是第二个异常Username cannot be missing or blank的“.getMessage()”

我该怎么做呢?谢谢!

1 个答案:

答案 0 :(得分:2)

我在这里看到两个主要选项:

  1. 使用for($i=0; $i < $checkboc_count; $i++) 获取原因,并在原因上调用getCause(),而不是从顶级异常本身调用。
  2. 通过获取&#34; Exception&#34;的最后一个实例来手动格式化字符串。子串并丢弃之前(包括)所有内容;这应该被用作最后的选择,因为它会增加复杂性并降低可读性。
相关问题