2013-09-26 42 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