2013-09-26 66 views
0

在我的數據庫訪問對象我具有由一個servlet執行的空隙方法:異常到servlet

吾道:

public void saveGL(glmaintenancebean glm) { 
     username = glm.getUsername(); 
     date = glm.getDate(); 
     code = glm.getCode(); 
     branch = glm.getBranch(); 
     currency = glm.getCurrency(); 
     description = glm.getDescription(); 
     type = glm.getType(); 
     String bankid = getBankId(); 
     Connection conn; 
     try{ 
      conn = db.getDbConnection(); 
      String sql = "insert into gl_master (GL_CODE,GL_BRANCH,GL_CURRENCY,GL_DESC,GL_TYPE,BANK_ID," 
        + "RCRE_USER,RCRE_DATE,LMOD_USER,LMOD_DATE) VALUES(?,?,?,?,?,?,?," 
        + "to_date(?,'yyyy/mm/dd hh24:mi:ss'),?,to_date(?,'yyyy/mm/dd hh24:mi:ss'))"; 
      PreparedStatement ps = conn.prepareStatement(sql); 
      ps.setString(1, code.toUpperCase()); 
      ps.setString(2, branch.toUpperCase()); 
      ps.setString(3, currency.toUpperCase()); 
      ps.setString(4, description.toUpperCase()); 
      ps.setString(5, type.toUpperCase()); 
      ps.setString(6, bankid.toUpperCase()); 
      ps.setString(7, username.toUpperCase()); 
      ps.setString(8, date); 
      ps.setString(9, username.toUpperCase()); 
      ps.setString(10, date); 
      ps.executeUpdate(); 
     }catch(Exception asd){ 
      System.out.println(asd.getMessage()); 
     } 
    } 

我的servlet;

glmaintenancedao gld = new glmaintenancedao();//My Dao 
      if (gld.glAlreadyExists(glm) == false) { 
       if (gld.usersolandenteredsolMismatch(glm) == false) { 
        gld.saveGL(glm);//My void method called 
        request.setAttribute("succ", "General Ledger added Succesfully"); 
        request.getRequestDispatcher("/WEB-INF/gl/glmaintenanance_succ.jsp").forward(request, response); 
       } else { 
        request.setAttribute("succ", "User not Authorised to add Gl In another Branch!!"); 
        request.getRequestDispatcher("/WEB-INF/gl/glmaintenanance_succ.jsp").forward(request, response); 
       } 

我需要用戶從虛空道法而產生的任何錯誤說所有的ORA錯誤說無效的列名,表或視圖不存在報告。

在我的代碼,如果數據庫ORA錯誤encouuntered系統仍然displys成功添加總帳:

艾米的想法將被appreaciated。

+0

我覺得第8列datetime數據類型和你正在使用setString方法。這可能會導致錯誤 – SpringLearner

+0

沒有先生,這不是什麼導致的錯誤,雖然我同意它可能會導致錯誤。我的問題是,如果您所說的錯誤發生在該方法中,我需要能夠通過servlet將其顯示給用戶。此錯誤當前顯示在我的aaplication服務器日誌中。 – ErrorNotFoundException

回答

1

您正在捕獲DAO中的所有異常,這就是爲什麼他們沒有回報。

您可以:

  1. 修改saveGL()聲明它拋出SQLException
  2. 修改catch子句包裹SQLException到應用程序特定的異常(即你已經創建了一個Exception類),並重新拋出;這個異常可能會被檢查,所以saveGL()必須聲明它,或者取消選中(RuntimeException)。

處理異常:

  1. 趕上它在servlet
  2. 定義異常處理web.xml和顯示錯誤頁面
+0

我坦率地不理解這個部分:'你正在捕獲DAO中的所有異常,這就是爲什麼他們不被報告回來。'這是否意味着我刪除了My方法中的try catch語句? – ErrorNotFoundException

+0

不在任何帳戶!這意味着catch(Exception asd){/ * print it * /}'將捕獲所有異常,並且函數將返回,就好像異常沒有發生一樣(只有證據證實它發生在控制檯中)。所以你要麼(僞代碼)'catch(...){throw SomethingElse}'或者什麼都不捕捉,在方法中聲明異常:'public void saveGL(...)throws ...',並且抓住它該servlet。 –

+0

好吧試試這個,讓你知道我是怎麼相處的,感謝你的幫助。 – ErrorNotFoundException