2014-10-29 92 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