Exception handling 捕捉DAO中的错误好吗?

Exception handling 捕捉DAO中的错误好吗?,exception-handling,glassfish,log4j,Exception Handling,Glassfish,Log4j,第五行代码可能会产生错误。举几个例子,错误可能是…映射中提到的存储过程不存在,映射中提到的列名不存在..等等 如果我没有捕捉到错误并出现问题,那么日志跟踪将写入server.log,web应用程序将在我的web.xml中提到的错误页面停止 如果我发现了错误,那么web应用程序不会在错误页面停止,而是继续它的快乐之路(谁知道它现在会停在哪里) 所以现在我想在这里不要犯错误 问题是我不想在server.log中写入堆栈跟踪(如上所述,默认情况下现在就发生)。相反,我想将堆栈跟踪写入名为myapp.l

第五行代码可能会产生错误。举几个例子,错误可能是…映射中提到的存储过程不存在,映射中提到的列名不存在..等等

如果我没有捕捉到错误并出现问题,那么日志跟踪将写入
server.log
,web应用程序将在我的
web.xml
中提到的错误页面停止

如果我发现了错误,那么web应用程序不会在错误页面停止,而是继续它的快乐之路(谁知道它现在会停在哪里)

所以现在我想在这里不要犯错误

问题是我不想在
server.log
中写入堆栈跟踪(如上所述,默认情况下现在就发生)。相反,我想将堆栈跟踪写入名为
myapp.log
(我们使用的是log4j)的文件。但是,我不知道如何在不捕获错误的情况下将堆栈跟踪显式写入
myapp.log
。下面是我将要编写的代码(但应用程序不会停止,因为我捕捉到了错误并将继续运行,这是不好的)

在这种情况下,我的选择是什么?最佳做法是什么


PS:这个问题与我的另一个问题相关,但我已经尝试在这个问题中添加示例,并寻求最佳实践建议

捕捉不需要是“永久的”。只需捕获它,记录它,然后重新显示错误。像这样:

OurLogger log = OurLogger.getLogger("myapp", MyClassName.class);
public boolean checkInd() {
    int dis_ind = 2;
    try {
    HashMap parmMap = new HashMap();
    //line below can generate errors
    getSqlMapClientTemplate().queryForList("authentication.checkInd", parmMap);
    List results = (List) parmMap.get("Result0");
    HashMap resultMap;
    if (result.size()>0)
        resultMap = (HashMap)resultMap.get(0); 
        dis_ind = (Integer)resultMap.get("PK_VALUE");
    }
    catch (BadSqlGrammarException e) {log.error(e, e.getMessage());}
        if (dis_ind == 1)
            return true;
        else
            return false;
}

捕捉不需要是“永久的”。只需捕获它,记录它,然后重新显示错误。像这样:

OurLogger log = OurLogger.getLogger("myapp", MyClassName.class);
public boolean checkInd() {
    int dis_ind = 2;
    try {
    HashMap parmMap = new HashMap();
    //line below can generate errors
    getSqlMapClientTemplate().queryForList("authentication.checkInd", parmMap);
    List results = (List) parmMap.get("Result0");
    HashMap resultMap;
    if (result.size()>0)
        resultMap = (HashMap)resultMap.get(0); 
        dis_ind = (Integer)resultMap.get("PK_VALUE");
    }
    catch (BadSqlGrammarException e) {log.error(e, e.getMessage());}
        if (dis_ind == 1)
            return true;
        else
            return false;
}
catch (BadSqlGrammarException e) {
  log.error(e, e.getMessage());
  throw e;
}