One more question, why we do both log exception and throw it inside handleException?. It will result in multiple log messages in log file, for a single problem in the code.
On Thu, Oct 2, 2014 at 9:32 AM, Dinesh J Weerakkody <[email protected]> wrote: > Hi, > > I'm just curious about the stranded way of handling exceptions in WSO2 > products. When I go through source code, I found that we use > handleException method in some places (in some places use deferent method > such as create new exceptions, catch, log and ignore, etc.) Can someone > explain the standard exception handling mechanism in WSO2 products and it > will be very helpful for newcomers also. (use cases for each case like when > to use what method). > > > When it comes to handleException method, I have another question. > > > *Current handle exception method* > public void handleException(String msg, Exception e) throws > ProductException{ > log.error(msg, e); > throw new ProductException(msg, e); > } > > *Problem* > class One{ > public void methodOne() { > try { > Two two = new Two(); > two.methodTwo(); > } catch (WhateverException e) { > handleException("Whatever exception message", e); > } > } > } > > class Two{ > public void methodTwo() { > try { > // Database manipulation code goes here > } catch (SQLException e) { > handleException("Cannot complete the transaction", e); > } > } > } > > In handleException method we always create a new Exception. When we have > multiple method calls, there will be duplicate stacktraces and the actual > exception is printed in very latter part of the stack trace. Sometimes it > is bit difficult to trace an error. Is there any specific reason to create > new exceptions inside handleException method, instead of throwing same > exception object if the exceptions is an instance of ProductException like > below sample. > > public void handleException(String msg, Exception e) throws > ProductException{ > log.error(msg, e); > if(e instanceof ProductException) > throw e; > throw new ProductException(msg, e); > } > > Thank you. > > > -- > > *Dinesh J. Weerakkody* > Software Engineer > WSO2 Inc. > lean | enterprise | middleware > M : +94 727 361788 | E : [email protected] | W : www.wso2.com > > _______________________________________________ > Dev mailing list > [email protected] > http://wso2.org/cgi-bin/mailman/listinfo/dev > > -- Danesh Kuruppu Software Engineer WSO2 Inc, Mobile: +94 (77) 1690552
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
