2014-10-29 57 views
0

因此,我构建了一个Java Web服务来连接到我正在开发的移动Android应用程序。我是新来的Java & Android,我有点困难。我有我的android将登录详细信息发送到Restful Web服务,但当它试图验证为用户创建的数据库表中的详细信息时,宁静的Web服务失败。我知道这是支票凭证问题,因为当我注销支票凭证时,它会让我登录。我无法弄清楚我的代码中的凭证验证声明中出错的地方,有人可以提供帮助,这很棒。下面是我的Restful服务的Login.class。另外我正在运行tomcat7的所有东西。Java Restful Web服务登录凭据失败

private boolean checkCredentials(String uname, String pwd){ 

     System.out.println("Inside checkCredentials"); 
     boolean result = false; 
     if(Utitlity.isNotNull(uname) && Utitlity.isNotNull(pwd)){ 
      try { 
       result = DBConnection.checkLogin(uname, pwd); 
       // System.out.println("Inside checkCredentials try "+result); 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       // System.out.println("Inside checkCredentials catch"); 
       result = false; 
      } 
     }else{ 
      System.out.println("Inside checkCredentials else"); 
      result = false; 
     } 

     return result; 
    } 

回答

0

您的代码有几个问题。主要的一点是你可以像处理一般的“未检出”一样处理checkLogin()中抛出的异常。

你真的想悄悄忽略任何系统故障,处理它就像一个有效的商业案例?

我并不是说这是错误在任何情况下,却使其成为明确的设计决策,并至少记录异常的一些信息,所以你可以看到什么是错的。

更重要的是,限制了追赶子句你真的希望抛出的异常。 (即使如此,登录异常的信息!)

DBConnection.checkLogin()静态方法的使用表明更多的设计问题。它可能有用,在某些情况下可以方便,但从长远来看,它会咬你。

所以,找到你的眼前的问题:打印异常的堆栈跟踪捕捉子句。在呼叫之后,还要记录checkLogin()调用的结果,仍然在try-block中。如果打印该信息,则不会抛出异常,并且您的问题位于checkLogin()之内。

+0

所以我对Java编程非常陌生。我将如何去记录和显示导致异常的信息? – Baroti 2014-10-29 06:33:50

+0

此刻,只是为了找到问题,一个e.printStackTrace();在catch-block会做。对于永久记录,有几个记录框架。除了内置到Java(java.util.logging)之外,最流行的还有Log4J,SLF4J和Apache公共日志记录。 – 2014-10-29 06:51:16