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 : dine...@wso2.com | W : www.wso2.com
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to