public boolean checkInd() {
int dis_ind = 2;
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");
if (dis_ind == 1)
return true;
else
return false;
}
5th line of the code can generate errors. To name a few, errors might be...Stored Procedure mentioned in mapping does not exist, column name mentioned in mapping does not exist..etc..
If I do not catch the error and something goes wrong then log trace is written on server.log
and the webapplication stops at the error page mentioned in my web.xml
If I catch the error then web app does not stop at error page and continues on its merry way (who knows where it will stop now).
So by now I am thinking NOT to catch errors here.
Problem is that I do not want to write the stack trace in server.log
(which happens by default right now, as mentioned above). Instead I want to write stack trace to a file called myapp.log
(we are using log4j). However, i do not know a way to explicitly write stack trace to myapp.log
without actually catching the error. Below is the code I would write (but again the app will not stop since i am catching the error and will keep going, which is not good).
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;
}
What are my options in this situation and what are the best practices?
PS: This question is related to my other question but i've tried to add examples in this question and seek best practice advice.